Enne koodi rakendamist on oluline mõista C # programmeerimise mõisteid. Enne kui hakkame uurima erinevusi const ja readly vahel, mõistame kõigepealt märksõnu ja nende kasutamist programmis. Mõlemad on C # programmeerimisel kõige tavalisemad märksõnad ja põhimõtteliselt samal eesmärgil. Kuid mõlemad märksõnad on üksteisest väga erinevad. Const on reserveeritud sõna, mida kasutatakse püsiväärtuste tähistamiseks ja see täpsustab, et väärtust ei saa pärast kompileerimise aega muuta, samas kui readonly on modifikaator, mida saab kasutada väljadel ja mille väärtust saab käitusaja jooksul muuta. Heidame pilgu peamistele erinevustele konstantse ja kirjutuskatse vahel.
Const tähistab konstantset muutujat, mille väärtuse tuleb deklareerimise ajal määrata ainult üks kord. Kui deklaratsiooni ajal kasutatakse märksõna const, muutub see konstantseks, väärtus jääb samaks ja seda ei saa kogu programmi jooksul muuta. See on rohkem reserveeritud sõna, mis täpsustab, et väärtust ei tohi pärast kompileerimise aega muuta. Const on vaikimisi staatiline, nii et seda saab klassinimega kutsuda, kasutades “Classname.VariableName”. Püsiväärtusi nimetatakse ka literraalideks. See võib olla mis tahes põhiandmetüüp, näiteks täisarv const, ujuv const või stringi täht.
Märksõna Readonly on modifikaator, mida saab kasutada ainult väljadel, kuid mitte kohalikke muutujaid. Ainult välja saab lähtestada deklareerimise ajal või samas klassis oleva konstruktori sees, nii et programmi eri teostuste väärtused võivad olla erinevad, sõltuvalt kasutatavast konstruktorist. Ainult kirjutatud märksõna täpsustab, et objekti esinemismuutujat ei saa muuta ja iga katse seda pärast deklareerimist modifitseerida põhjustab kompileerimisvea. Muutuja saab modifitseerimata alles pärast täitmist. Muutujaid tehakse ainult lugemiseks, et kood ei saaks pärast selle konstrueerimist tahtmatut muutmist.
Pidev (const) märksõna pole midagi muud kui muutumatud muutujad, mille väärtuse saab lähtestada alles kompileerimise ajal. Neid püsiväärtusi nimetatakse ka literraalideks. See võimaldab meil lihtsalt täpsustada, kas muutuja on muudetav või mitte. Lihtsamalt öeldes on konstandid kaudselt staatilised ja enne programmi kasutamist tuleks need lähtestada. Teisalt on ainult lugemiseks mõeldud märksõna modifikaator, mida saab kasutada väljadel ja mille väärtust saab käituse ajal muuta. See takistab väljade muutmist ja nende väärtusi saab referentsmuutujate abil seada.
Const on vaikimisi staatiline ja väärtused tuleks omistada muutuja deklareerimise ajal, mis tähendab, et väärtused määratakse ainult kompileerimise ajal. Konstant deklareeritakse märksõnaga “const”. Konstantse välja lähtestamine peab olema konstantne avaldis ja seda ei tohi muuta. Lihtsamalt öeldes on const kompileerimisaja konstant. Seevastu kirjutusvälja saab lähtestada ainult klassi tasemel, mitte meetodi sees, ja välja ei saa pärast lähtestamist muuta. Teisisõnu, loetavad muutujad saab lähtestada deklareerimise ajal või konstruktori sees.
Const väärtus sisestatakse otse koodi, kuna see toimib kompileerimise aja asendajana. Kompilaator paigutab konstantse väärtuse kogumi metaandmetesse, mis määratleb konstandi ja manustab selle väärtuse IL-koodi endasse pärast initsialiseerimist, seega pole konstantide jaoks mälu vaja eraldamiseks töötamise ajal. Vaid lugemisväärtus ei ole püsiv ja see on salvestatud laadurisse, mille mälu ei saa enne selle tüübi laadimist eraldada. Ainult kirjutusväljad salvestatakse dünaamilisse mällu, nii et väärtusi saab hankida ainult käitusaja ajal.
Ehkki mõlemat märksõna kasutatakse peaaegu samal otstarbel, on neil erinev binaarse versiooni semantika. Kui avaldis viitab konstandile, manustab kompilaator selle väärtuse kompileerimise ajal. Nii et kui väärtust kasutatakse muus koosseisus, tuleb algset koost uuendada ja väärtust muuta. Komplekti muudatusi ei kajastata enne, kui see on uuesti kompileeritud. Väärtust ei saada enne käitust, kui avaldis viitab kirjutusväljale. Kui väärtust muudetakse teises koosseisus, kajastuvad muudatused koostu kohe, kui see laaditakse, ilma et oleks vaja seda uuesti kompileerida..
Mõlemat märksõna kasutatakse sama asja jaoks, milleks on liikme kuulutamine, nii et väärtusi ei saaks kogu programmi jooksul muuta. Const-märksõna on siiski väga erinev loetavast. Const on püsiv muutuja, mille väärtus tuleks lähtestada kompileerimise ajal, samas kui kirjutusvälja saab lähtestada ainult klassi tasemel, kas deklareerimise ajal või konstruktori sees. Const on kompileerimisaja konstant, samas kui ainult kirjutusväljad on kirjutuskaitstud. Konstandi muutujatele pääseb juurde kasutades „Klassinimi.VariableNimi”, samas kui ainult loetavatele muutujatele pääseb juurde, kasutades nuppu „Nimi.VariableNimi”. Lisaks saab konstantseid muutujaid deklareerida meetodites, samas kui kirjutusvälju ei saa meetodites avaldada.