Stalno i ReadOnly

Anonim

Važno je razumjeti koncepte C # programa prije nego što nastavite s primjenom koda. Prije nego što prijeđemo na razlike između konstata i čitanja, najprije ćemo razumjeti ključne riječi i kako ih koristiti u programu. Oba su najčešća ključna riječ korištena u C # programiranju i u osnovi za istu svrhu. Međutim, obje su ključne riječi vrlo različite jedna od druge. Const je rezervirana riječ koja se koristi za prikazivanje konstantnih vrijednosti i određuje da se vrijednost ne može mijenjati nakon kompilacijskog vremena, dok je samo čitač modifikator koji se može koristiti na poljima i vrijednost se može mijenjati tijekom runtime. Pogledajmo neke od ključnih razlika između const i readonly.

Što je Const?

Const se odnosi na stalnu varijablu i vrijednost koju treba dodijeliti samo jednom, tijekom deklaracije. Kada se konstanta ključnih riječi koristi tijekom deklaracije, ona postaje stalno značenje, vrijednost ostaje konstantna i ne može se mijenjati tijekom cijelog programa. To je više rezervirana riječ koja specificira da se vrijednost ne smije mijenjati nakon kompilacije. Standard je implicitno statičan prema zadanim postavkama, tako da se može nazvati naziv klase pomoću "Classname.VariableName". Stalne vrijednosti se nazivaju i kao literalni. Može biti bilo koje osnovne vrste podataka kao što su cijeli broj konstrata, plutajući const ili string literal.

Što je ReadOnly?

Ključna riječ Readonly je modifikator koji se može koristiti samo na poljima, ali ne i lokalnim varijablama. Čitajuće polje može se inicijalizirati bilo u vrijeme deklaracije ili unutar konstruktora u istoj klasi, tako da se vrijednosti mogu razlikovati za različite izvedbe programa ovisno o konstruktoru koji se koristi. Čitavo ključna riječ određuje da instancijska varijabla nekog objekta nije promjenjiva i svaki pokušaj da ga izmijeni nakon što je rezultat izjave prouzročio pogrešku u kompilaciji. Varijabla ne postaje neizmjenjiva sve do trenutka izvršenja. Varijable su napravljene samo za zaustavljanje pozivanja koda slučajnim promjenama nakon što je konstruirana.

Razlika između konstantne i ReadOnly

  1. Osnovni, temeljni

Konstanta (const) ključna riječ nije ništa drugo nego nepromjenjive varijable čija se vrijednost može inicijalizirati samo u vrijeme sastavljanja. Te konstantne vrijednosti nazivaju se i kao literalni. Jednostavno nam omogućuje da odredimo je li varijabla promjenjiva ili ne. U jednostavnim terminima, konstante su implicitno statične i trebale bi se inicijalizirati prije nego što se koriste u programu. S druge strane, samo ključna riječ za čitanje je modifikator koji se može koristiti na poljima i vrijednost se može promijeniti tijekom izvođenja. Sprječava promjene polja i vrijednosti koje se mogu postaviti kroz referentne varijable.

  1. Inicijalizacija

Konstanta je statički po defaultu i vrijednosti za koje treba dodijeliti u vrijeme varijable deklaracije, što znači da se vrijednosti dodjeljuju samo u trenutku sastavljanja. Konstanta se deklarira pomoću ključne riječi "const". Inicijalizacija stalnog polja mora biti stalni izraz i ne smije se mijenjati. Jednostavno rečeno, const je konstanta sastavljanja vremena. S druge strane, čitavo polje može se inicijalizirati samo na razrednoj razini, a ne unutar metode, a polje se ne može mijenjati nakon inicijalizacije. Drugim riječima, readonly varijable mogu se inicijalizirati u vrijeme deklaracije ili unutar konstruktora.

  1. Određivanje memorije

Konstanta se stavlja izravno u kôd jer djeluje kao zamjena za vrijeme zamjene. Kompilator stavlja konstantnu vrijednost u metapodatke skupštine koja definira konstantu i ugrađuje vrijednost u sam IL kod nakon inicijalizacije, tako da nema potrebe za memorijom za konstante tijekom izvođenja. Readonly vrijednost nije stalna i pohranjena je u punilu hrpe punjača za koju se ne može dodijeliti sve dok se njen tip ne napuni. Čitajuća polja pohranjuju se u dinamičnoj memoriji tako da se vrijednosti mogu dobiti samo pri izvođenju vremena.

  1. Binarno umnožavanje

Premda se obje ključne riječi koriste gotovo za istu svrhu, imaju različite binarnu verzijsku semantiku. Kada izraz upućuje na konstantu, prevodilac ugrađuje vrijednost pri sastavljanju vremena. Dakle, ako se vrijednost koristi u drugom sklopu, izvorni sklop mora biti ažuriran, a vrijednost bi trebala biti promijenjena. Promjene u sklopu se ne odražavaju dok se ne recompilira. Vrijednost se ne dobiva do izvođenja vremena kada se izraz odnosi samo na polje za čitanje. Ako se vrijednost mijenja u drugom sklopu, promjene se odražavaju u skupštini čim se učitava bez potrebe za recompiliranjem.

Const vs. Readonly: usporedni prikaz

Sažetak Const vs. Readonly

Oba ključna riječ koriste se za istu stvar koja je deklarirati člana, tako da se vrijednosti ne mogu mijenjati tijekom cijelog programa. Međutim, ključna riječ const je vrlo različita od ključne riječi za čitanje. Const je konstantna varijabla čiju vrijednost treba inicijalizirati pri sastavljanju vremena, dok se samo polje za čitanje može inicijalizirati samo na razrednoj razini, bilo u vrijeme deklaracije ili unutar konstruktora. Const je konstanta sastavljanja vremena, dok su samo polja čitanja. Konstantne varijable mogu se pristupiti pomoću "Classname.VariableName", dok se samo dostupne varijable mogu pristupiti pomoću "InstanceName.VariableName".Štoviše, konstanta varijable može se deklarirati u metodama, dok se samo polja ne mogu deklarirati u metodama.