A kód bevezetése előtt fontos megérteni a C # programozás fogalmait. Mielőtt áttérnénk a const és az readly közötti különbségekre, először megértsük a kulcsszavakat és azt, hogy miként használják őket egy programban. Mindkettő a C # programozásban használt leggyakoribb kulcsszó, és alapvetően ugyanazon a célon. Mindkét kulcsszó azonban nagyon különbözik egymástól. A Const egy fenntartott szó, amelyet állandó értékek ábrázolására használnak, és meghatározza, hogy az értéket fordítási idő után nem lehet módosítani, míg az readonly mezőkön használható módosító, amelynek értéke a futási idő alatt megváltoztatható. Vessen egy pillantást a legfontosabb különbségekre a const és az readly között.
A Const állandó változóra vonatkozik, amelynek értékét csak egyszer kell megadni, a deklarálás során. Amikor a const kulcsszót deklaráció során használja, akkor állandóvá válik, az érték állandó marad, és nem változtatható meg a program során. Ez inkább egy fenntartott szó, amely meghatározza, hogy az értéket fordítási idő után nem szabad módosítani. A const alapértelmezés szerint implicit módon statikus, így az osztálynévvel meg lehet hívni az „Classname.VariableName” használatával. Az állandó értékeket literálnak is nevezzük. Bármely alap adattípus lehet, például egész szám const, lebegő const vagy karakterlánc.
A Readonly kulcsszó olyan módosító, amelyet csak a mezőkön lehet használni, de nem a helyi változókat. Az írásvédett mező inicializálható akár a deklarálás idején, akár egyazon osztályba tartozó konstruktor belsejében, tehát az értékek a felhasznált konstruktortól függően eltérhetnek a program különböző végrehajtásainál. Az írásvédett kulcsszó meghatározza, hogy egy objektum példányváltozója nem módosítható, és a deklarálást követő módosítására tett minden kísérlet fordítási hibát eredményez. A változó csak a végrehajtás után válik nem módosíthatóvá. A változókat csak olvasásra készítik, hogy a kód meghívása ne változtasson véletlenül a szerkesztés után.
A konstans (const) kulcsszó nem más, mint változatlan változók, amelyek értékét csak a fordítás idején lehet inicializálni. Ezeket az állandó értékeket literáloknak is nevezzük. Ez egyszerűen lehetővé teszi, hogy meghatározzuk, hogy egy változó módosítható-e vagy sem. Egyszerűen fogalmazva, az állandók implicit módon statikusak, és a programban való felhasználásuk előtt inicializálni kell őket. A readonly kulcsszó ezzel szemben a mezőkön használható módosító, amelynek értéke megváltoztatható a futási idő alatt. Megakadályozza a mezők megváltoztatását, amelyek értékei referenciaváltozókon keresztül állíthatók be.
A const alapértelmezés szerint statikus, és az értékeket a változó deklarálásakor kell hozzárendelni, azaz az értékeket csak a fordítás idején adják hozzá. A konstansot a „const” kulcsszóval deklaráljuk. Az állandó mező inicializálásának állandó kifejezésnek kell lennie, és nem módosítható. Egyszerűen fogalmazva: a const fordítási idő állandó. Ezzel szemben az csak olvasható mező csak az osztály szintjén inicializálható, nem pedig a módszer belsejében, és a mező nem módosítható az inicializálás után. Más szavakkal, az csak olvasható változók inicializálhatók a deklaráláskor vagy a konstruktor belsejében.
A const értéket közvetlenül a kódba helyezik, mivel az fordítási idő helyettesítője. A fordító az állandó értéket az összeállítási metaadatokba helyezi, amelyek meghatározzák az állandót, és az inicializálás után beágyazják az értéket az IL-kódba, tehát nem szükséges memória a konstansok számára az allokáció futási idején. A csak olvasható érték nem állandó, és a betöltőben tárolja azt a memóriát, amelyhez nem lehet hozzárendelni, amíg a típusa betöltődik. Az írásvédett mezőket a dinamikus memória tárolja, így az értékeket csak futási időben lehet megszerezni.
Bár mindkét kulcsszó szinte ugyanazt a célt használja, eltérő bináris verziószámú szemantikájuk van. Ha egy kifejezés állandóra utal, a fordító beágyazza az értéket fordítási időben. Tehát ha az értéket más összeállításban használja, akkor az eredeti összeállítást frissíteni kell, és az értéket meg kell változtatni. A szerelvényben bekövetkező változások csak az újrafordításig tükröződnek. Az érték csak futásidejig érhető el, amikor egy kifejezés csak olvasható mezőre hivatkozik. Ha az értéket megváltoztatja egy másik összeállításban, akkor a változások megjelennek az összeállításban, amint betöltődik, anélkül, hogy újra kellene fordítania..
Mindkét kulcsszó ugyanahhoz a dologhoz használható, amely a tag deklarálása, hogy az értékek ne változhassanak az egész programban. A const kulcsszó azonban nagyon különbözik az csak olvasható kulcsszótól. A Const állandó változó, amelynek értékét a fordítás idején kell inicializálni, míg az csak olvasható mezőt csak osztályszinten lehet inicializálni, akár a deklarálás idején, akár a konstruktoron belül. A Const fordítási idő állandó, míg az csak olvasható mezők csak olvashatóak. A konstans változók az „Classname.VariableName” használatával érhetők el, míg az csak olvasható változók az „Példánynév.VariableName” használatával érhetők el. Ezenkívül a const változókat be lehet deklarálni a módszerekben, míg az csak olvasható mezőket nem lehet a módszerekben bejelenteni.