Važno je razumjeti koncepte programiranja C # prije nego što nastavite s implementacijom koda. Prije nego što prijeđemo na razlike između const-a i readonly-a, prvo razumimo ključne riječi i kako se one koriste u programu. Obje su najčešće ključne riječi koje se koriste u C # programiranju i u osnovi za istu svrhu. Međutim, obje su ključne riječi vrlo različite. Const je rezervirana riječ koja se koristi za predstavljanje konstantnih vrijednosti i određuje da se vrijednost ne može mijenjati nakon sastavljanja, dok readonly je modifikator koji se može koristiti u poljima i čija se vrijednost može mijenjati tijekom izvođenja. Pogledajmo neke ključne razlike između const-a i readonly-a.
Const se odnosi na konstantnu varijablu čija vrijednost treba biti dodijeljena samo jednom, tijekom deklariranja. Kada se tijekom deklaracije upotrebljava ključna riječ const, ona postaje konstantno što vrijednost ostaje konstantna i ne može se mijenjati u cijelom programu. To je više rezervirana riječ koja određuje da se vrijednost ne smije mijenjati nakon sastavljanja. Const je podrazumijevano statički statički, pa se može nazvati imenom klase pomoću "Classname.VariableName". Stalne vrijednosti se nazivaju i doslovne. Može biti bilo koji osnovni tip podataka, poput cjelobrojnog consta, plutajućeg const ili literalnog niza.
Ključna riječ Readonly modifikator je koji se može koristiti samo na poljima, ali ne i na lokalnim varijablama. Polje za čitanje može se inicijalizirati bilo u vrijeme deklaracije ili unutar konstruktora u istoj klasi, tako da vrijednosti mogu biti različite za različite izvedbe programa, ovisno o konstruktoru koji se koristi. Ključna riječ koja je samo za čitanje određuje da se varijabla instancije objekta ne može mijenjati, a svaki pokušaj promjene nakon deklaracije rezultira pogreškom u sastavljanju. Promjenjiva se ne može mijenjati tek nakon izvršenja. Varijable su napravljene samo za čitanje kako bi prestale pozivati kôd da ga slučajno izmijene nakon što je izgrađen.
Stalna (const) ključna riječ nije ništa drugo do nepromjenjive varijable čija se vrijednost može inicijalizirati samo u vrijeme sastavljanja. Te se konstantne vrijednosti nazivaju i doslovne. Jednostavno nam omogućuje da odredimo je li varijabla moguće mijenjati ili ne. Jednostavno rečeno, konstante su implicitno statične i treba ih inicijalizirati prije nego što se upotrebe u programu. S druge strane, ključna riječ Readonly je modifikator koji se može koristiti u poljima i čija se vrijednost može mijenjati tijekom izvođenja. Sprječava promjenu polja i čije se vrijednosti mogu postaviti putem referentnih varijabli.
Const je prema statičkim postavkama statičan, a vrijednosti za koje treba dodijeliti u trenutku deklaracije varijable što znači da su vrijednosti dodijeljene samo u vrijeme sastavljanja. Konstanta se deklarira pomoću ključne riječi "const". Inicijalizacija konstantnog polja mora biti stalan izraz i ne smije se mijenjati. Jednostavno rečeno, const je konstanta vremena sastavljanja. S druge strane, polje za čitanje može se inicijalizirati samo na razini klase, a ne unutar metode, a polje se ne može mijenjati nakon inicijalizacije. Drugim riječima, varijable koje se samo čitaju mogu se inicijalizirati u trenutku deklaracije ili unutar konstruktora.
Vrijednost const stavlja se izravno u kod jer djeluje kao zamjena vremena sastavljanja. Kompajler postavlja konstantnu vrijednost u metapodatke sklopa koji definira konstantu i ugrađuje vrijednost u sam IL kôd nakon inicijalizacije, tako da za dodjelu konstanti tijekom izvođenja nije potrebna memorija. Vrijednost samo za čitanje nije konstantna i pohranjuje se u gomilu utovarivača koja se ne može dodijeliti dok se ne učita njegova vrsta. Polja za čitanje samo se pohranjuju u dinamičku memoriju tako da se vrijednosti mogu dobiti samo u vrijeme izvođenja.
Iako se obje ključne riječi koriste gotovo u istu svrhu, imaju različitu semantiku binarne verzije. Kad izraz upućuje na konstantu, prevoditelj ugrađuje vrijednost u vrijeme sastavljanja. Dakle, ako se vrijednost koristi u drugom sklopu, izvorni sklop treba ažurirati i vrijednost promijeniti. Promjene u sklopu ne odražavaju se dok se ne sastavi. Vrijednost se dobiva do vremena izvršavanja, kada izraz upućuje na polje za čitanje. Ako se vrijednost promijeni u drugom sklopu, promjene se odražavaju u sklopu čim se učitaju bez potrebe za ponovnom kopiranjem.
Obje se ključne riječi koriste za istu stvar koja je deklariranje člana tako da se vrijednosti ne mogu mijenjati u programu. Međutim, const ključna riječ vrlo se razlikuje od ključne riječi readonly. Const je konstantna varijabla čija vrijednost treba biti inicijalizirana u vrijeme sastavljanja, dok se samo za čitanje polje može inicijalizirati samo na razini klase, bilo u trenutku deklaracije ili unutar konstruktora. Const je konstanta vremena sažimanja, dok polja za čitanje samo za čitanje. Promjenjivim se konstantama može pristupiti pomoću "Classname.VariableName", dok se varijablama za čitanje može pristupiti pomoću "InstanceName.VariableName". Nadalje, const varijable mogu se deklarisati u metodama, dok se čitljivo polja ne mogu deklarirati u metodama.