Pomembno je razumeti koncepte programiranja C #, preden nadaljujete z izvajanjem kode. Preden skoknemo do razlik med const in readonly, najprej razberemo ključne besede in kako se uporabljajo v programu. Obe sta najpogostejši ključni besedi, ki se uporabljata pri programiranju C # in v bistvu za isti namen. Vendar se obe ključni besedi med seboj zelo razlikujeta. Const je rezervirana beseda, ki se uporablja za predstavljanje konstantnih vrednosti in določa, da vrednosti po prevajalnem času ni mogoče spremeniti, medtem ko je readonly modifikator, ki ga lahko uporabimo na poljih in katerih vrednost lahko med izvajanjem spreminjamo. Oglejmo si nekaj ključnih razlik med const in readonly.
Const se nanaša na stalno spremenljivko, katere vrednost je treba med deklaracijo dodeliti samo enkrat. Ko se med deklaracijo uporabi ključna beseda const, to postane stalnica, vrednost ostane konstantna in je ni mogoče spreminjati v celotnem programu. Gre bolj za rezervirano besedo, ki določa, da vrednosti po prevajalnem času ne smete spreminjati. Const je privzeto implicitno statičen, zato ga lahko pokličemo z imenom razreda z uporabo „Classname.VariableName“. Stalne vrednosti imenujemo tudi dobesedne. Lahko je kateri koli osnovni tip podatkov, na primer celo število const, plavajoči const ali nizko besedilo.
Ključna beseda Readonly je modifikator, ki ga je mogoče uporabiti samo na poljih, ne pa tudi lokalnih spremenljivkah. Polje za samo branje se lahko sproži bodisi ob deklaraciji bodisi znotraj konstruktorja v istem razredu, tako da so vrednosti lahko različne za različne izvedbe programa, odvisno od uporabljenega konstruktorja. Ključna beseda readonly določa, da spremenljivke primerka predmeta ni mogoče spremeniti in vsak poskus spremembe po deklaraciji povzroči napako pri sestavljanju. Spremenljivka ne postane spremenljiva šele po izvedbi. Spremenljivke se naredijo samo za branje, da preprečijo klic kode, da jo slučajno ne spremenijo po izdelavi.
Ključna beseda Constant (const) ni nič drugega kot nespremenljive spremenljivke, katerih vrednost je mogoče inicializirati šele ob prevajalnem času. Te konstantne vrednosti imenujemo tudi dobesedne. Preprosto nam omogoča, da določimo, ali je spremenljivka spremenljiva ali ne. Preprosto povedano, konstante so implicitno statične in jih je treba inicializirati, preden jih bomo uporabili v programu. Ključna beseda Readonly je na drugi strani modifikator, ki ga lahko uporabimo na poljih in katerih vrednost lahko med izvajanjem spreminjamo. Preprečuje spreminjanje polj, katerih vrednosti lahko nastavite s pomočjo referenčnih spremenljivk.
Const je privzeto statičen in vrednosti, ki jih je treba dodeliti ob deklaraciji spremenljivke, kar pomeni, da so vrednosti dodeljene samo v času prevajanja. Obstaja konstanta s ključno besedo "const". Inicializacija konstantnega polja mora biti stalen izraz in ga ne sme spreminjati. Preprosto povedano, const je stalnica časa sestavljanja. Polje, ki je samo za branje, je na drugi strani mogoče inicializirati le na ravni razreda, ne znotraj metode in polja ni mogoče spreminjati po inicializaciji. Z drugimi besedami, spremenljivke, ki so samo za branje, se lahko inicializirajo ob deklaraciji ali znotraj konstruktorja.
Vrednost const se vnese neposredno v kodo, saj deluje kot nadomestitveni čas. Prevajalnik postavi konstantno vrednost v metapodatke sestavljanja, ki definira konstanto in vdeli vrednost v kodo IL po inicializaciji, zato konstant med izvajanjem ne potrebuje za dodelitev. Vrednost za samo branje ni konstantna in se shrani v nalaganje nakladalnika, za katerega ni mogoče dodeliti, dokler se ne naloži njegova vrsta. Polja za samo branje so shranjena v dinamičnem pomnilniku, tako da lahko vrednosti dobimo le med izvajanjem.
Čeprav se obe ključni besedi uporabljata skoraj z istim namenom, imata različno semantiko binarne različice. Ko izraz sklicuje na konstanto, prevajalnik vklopi vrednost v času prevajanja. Če je vrednost uporabljena v drugem sestavu, je treba prvotno sestavo posodobiti in vrednost spremeniti. Spremembe v sklopu se ne odražajo, dokler ni ponovno sestavljena. Vrednost ni dosežena do časa izvajanja, ko izraz sklicuje samo na bralno polje. Če vrednost spremenite v drugem sestavu, se spremembe odražajo v sklopu takoj, ko se naloži, ne da bi ga bilo treba ponovno prevajati.
Obe ključni besedi se uporabljata za isto stvar, ki je razglasitev člana, tako da vrednosti ni mogoče spreminjati v celotnem programu. Ključna beseda const pa se zelo razlikuje od ključne besede readonly. Const je konstantna spremenljivka, katere vrednost je treba inicializirati v času prevajanja, medtem ko se lahko samo za branje polje inicializira samo na ravni razreda, bodisi ob deklaraciji bodisi znotraj konstruktorja. Const je konstanta časa sestavljanja, medtem ko so polja samo za branje samo za branje. Do spremenljivk Konstanc lahko dostopate z uporabo »Classname.VariableName«, medtem ko lahko do samo spremenljivk dostopate z »InstanceName.VariableName«. Poleg tega je mogoče spremeniti tudi const spremenljivke v metodah, medtem ko polja, ki jih je mogoče brati, ni mogoče objaviti v metodah.