Det är viktigt att förstå begreppen C # programmering innan du fortsätter med att implementera koden. Innan vi hoppar på skillnaderna mellan const och readonly, låt oss förstå sökorden först och hur de används i ett program. Båda är de vanligaste sökorden som används i C # programmering och i princip för samma ändamål. Båda sökorden är emellertid mycket olika från varandra. Const är ett reserverat ord som används för att representera konstanta värden och det specificerar att ett värde inte kan modifieras efter sammanställningen, medan readonly är en modifierare som kan användas på fält och vars värde kan ändras under körtiden. Låt oss ta en titt på några av de viktigaste skillnaderna mellan const och readonly.
Const hänvisar till en konstant variabel och vars värde endast måste tilldelas en gång, under deklarationen. När sökordskonst används under en deklaration blir det en konstant betydelse att värdet förblir konstant och kan inte ändras genom hela programmet. Det är mer av ett reserverat ord som anger att ett värde inte får ändras efter sammanställningen. En const är implicit statiskt som standard, så det kan kallas med klassnamnet med "Classname.VariableName". De konstanta värdena kallas också som bokstavliga. Det kan vara av någon grundläggande datatyp, såsom en heltalskonst, en flytande const eller en sträng bokstavlig.
Det läsande sökordet är en modifierare som endast kan användas på fält men inte lokala variabler. Ett läsfält kan initialiseras antingen vid tidpunkten för deklarationen eller inuti en konstruktör i samma klass, så värdena kan vara olika för olika utföranden av programmet beroende på konstruktören som används. Det läsliga sökordet anger att en instansvariabel för ett objekt inte kan ändras och att det försöker modifiera det efter deklarationsresultatet i kompileringsfelet. Variabeln blir inte modifierbar förrän efter utförandet. Variabler görs endast för att sluta ringa koden från att av misstag ändra den efter att den är konstruerad.
Konstant (const) nyckelord är inget annat än oföränderliga variabler vars värde endast kan initieras vid sammanställningstiden. Dessa konstanta värden kallas också som bokstavliga. Det tillåter oss helt enkelt att ange huruvida en variabel är modifierbar eller ej. I enkla termer är konstanter implicit statiska och de bör initialiseras innan de ska användas i programmet. Lättläst nyckelord är å andra sidan en modifierare som kan användas på fält och vars värde kan ändras under körtiden. Det förhindrar att fält ändras och vars värden kan ställas in genom referensvariabler.
En const är som standard statisk och värdena som ska tilldelas vid den variabla deklarationen, vilket betyder att värdena endast tilldelas vid sammanställningstiden. En konstant deklareras med hjälp av sökordet "const". Initialiseringen av ett konstant fält måste vara ett konstant uttryck och får inte ändras. Enkelt uttryckt, en const är en kompileringstidskonstant. Ett läsligt fält kan däremot endast initieras på klassnivå inte inom metoden och fältet kan inte modifieras efter initialisering. Med andra ord kan variabler initialiseras vid tidpunkten för deklarationen eller inuti en konstruktör.
Ett konstvärde sätts direkt i koden eftersom det fungerar som kompileringstiden. Kompilatorn placerar det konstanta värdet i sammansättningsmetadata som definierar konstanten och inbjuder värdet i IL-koden själv efter initialisering, så inget minne krävs för konstanter vid körning för allokering. Readonly-värdet är inte konstant och det är lagrat i lasthågen minnet som inte kan tilldelas tills dess typ laddas. De läsliga fälten lagras i det dynamiska minnet så att värdena endast kan erhållas vid körning.
Även om båda sökorden används nästan för samma ändamål har de olika binära versioner somantik. När ett uttryck refererar till en konstant, fyller kompilatorn värdet vid sammanställningstiden. Så om värdet används i en annan enhet, måste originalaggregatet uppdateras och värdet ska ändras. Förändringarna i aggregatet återspeglas inte förrän det kompileras. Värdet erhålls inte förrän runtime när ett uttryck refererar till ett läsligt fält. Om värdet ändras i en annan enhet, blir ändringarna reflekterade i enheten så fort den laddas utan att behöva kompilera det igen.
Båda sökorden används för samma sak som att deklarera en medlem så att värdena inte kan ändras under hela programmet. Const-nyckelordet skiljer sig dock mycket från det läsiga sökordet. Const är en konstant variabel vars värde bör initieras vid sammanställningen, medan ett läsligt fält endast kan initialiseras på klassnivå, antingen vid tidpunkten för deklarationen eller inuti konstruktorn. Const är en kompileringstidskonstant medan avläsningsfält är skrivskyddade. Constance variabler kan nås med "Classname.VariableName" medan readonly variabler kan nås med "InstanceName.VariableName". Dessutom kan const variabler deklareras i metoder, medan läsliga fält inte kan deklareras i metoder.