Forskjellen mellom konstant og ReadOnly

Det er viktig å forstå konseptene C # programmering før du fortsetter med å implementere koden. Før vi hopper over forskjellene mellom const og readonly, la oss forstå søkeordene først og hvordan de brukes i et program. Begge er de vanligste søkeordene som brukes i C # programmering og i utgangspunktet for samme formål. Begge søkeordene er imidlertid svært forskjellige fra hverandre. Const er et reservert ord som brukes til å representere konstante verdier, og det angir at en verdi ikke kan endres etter kompileringstid, mens readonly er en modifikator som kan brukes på felt og verdien av disse kan endres under kjøretid. La oss ta en titt på noen av de viktigste forskjellene mellom const og readonly.

Hva er en Const?

Const refererer til en konstant variabel, og verdien av denne må bare tildeles en gang under erklæring. Når søkeordskonstanten brukes under en erklæring, blir den konstant, og verdien forblir konstant og kan ikke endres gjennom hele programmet. Det er mer av et reservert ord som angir at verdien ikke må endres etter kompileringstid. En const er implisitt statisk som standard, så den kan bli kalt med klassenavnet ved å bruke "Klassenavn.Variabelnavn". De konstante verdiene kalles også som bokstavelige. Det kan være av en hvilken som helst grunnleggende datatype, for eksempel et heltall const, en flytende const eller en streng-bokstavelig.

Hva er ReadOnly?

Det leseordne søkeordet er en modifikator som bare kan brukes på felt, men ikke lokale variabler. Et lesefelt kan initialiseres enten på tidspunktet for deklarasjonen eller inne i en konstruktør i samme klasse, slik at verdiene kan være forskjellige for forskjellige henrettelser av programmet, avhengig av konstruktøren som brukes. Det lette søkeordet angir at en instansvariabel for et objekt ikke kan endres og ethvert forsøk på å modifisere det etter at deklarasjonen har resultert i kompileringsfeil. Variabelen blir ikke ikke-modifiserbar til etter utførelsen. Variabler er laget bare for å slutte å kalle koden fra et uhell å endre det etter at det er konstruert.

Forskjellen mellom Konstant og ReadOnly

  1. grunn~~POS=TRUNC

Konstant (const) nøkkelord er ingenting annet enn uforanderlige variabler som verdien kun kan initialiseres på kompileringstiden. Disse konstante verdiene kalles også som bokstavelig. Det lar oss bare angi om en variabel er modifiserbar eller ikke. Enkelt sagt er konstanter implisitt statiske og de bør initialiseres før de skal brukes i programmet. Lesende søkeord, derimot, er en modifikator som kan brukes på felt og verdien av disse kan endres under kjøretid. Det forhindrer at feltene endres og verdiene av disse kan settes gjennom referansevariabler.

  1. initialisering

En const er statisk som standard og verdiene som skal tildeles på tidspunktet for variabel deklarasjon, noe som betyr at verdiene kun tildeles på kompileringstidspunktet. En konstant er deklarert ved hjelp av "const" søkeordet. Initialiseringen av et konstant felt må være et konstant uttrykk og kan ikke endres. Enkelt sagt, en const er en kompileringstidskonstant. Et lesbart felt kan derimot kun initialiseres på klassenivå ikke inne i metoden, og feltet kan ikke endres etter initialisering. Med andre ord, kan lesbare variabler initialiseres på tidspunktet for deklarasjonen eller inne i en konstruktør.

  1. Minneallokering

En const verdi legges direkte inn i koden som det fungerer som kompileringstid erstatning. Kompilatoren plasserer den konstante verdien i forsamlingsmetadataene som definerer konstanten og innebærer verdien i IL-koden selv etter initialisering, slik at det ikke kreves minne for konstanter ved kjøring for tildeling. Lesverdig verdi er ikke konstant, og den er lagret i lasterhøyden, minnet som ikke kan tildeles før den er lastet inn. De lette feltene lagres i det dynamiske minnet, slik at verdiene kun kan oppnås ved kjøring.

  1. Binær Versjonering

Selv om begge nøkkelordene brukes nesten til samme formål, har de forskjellige binære versjoner somantikk. Når et uttrykk refererer til en konstant, innstiller kompilatoren verdien ved kompileringstid. Så hvis verdien brukes i en annen enhet, må den opprinnelige enheten oppdateres og verdien skal endres. Endringene i forsamlingen reflekteres ikke før den er kompilert. Verdien oppnås ikke før kjøretid når et uttrykk refererer til et readonly felt. Hvis verdien endres i en annen enhet, blir endringene reflektert i forsamlingen så snart den er lastet uten å måtte kompilere det.

Const vs. Readonly: Sammenligningstabel

Sammendrag av Const vs. Readonly

Begge søkeordene brukes til det samme som er å erklære et medlem slik at verdiene ikke kan endres gjennom hele programmet. Men const søkeord er veldig forskjellig fra det lette søkeordet. Const er en konstant variabel hvis verdi skal initialiseres på kompileringstiden, mens et lesbart felt kun kan initialiseres på klassenivå, enten på tidspunktet for deklarasjonen eller inne i konstruktøren. Const er en kompileringstidskonstant, mens readonly-felt er skrivebeskyttet. Constance-variabler kan nås med "Classname.VariableName" mens readonly variabler kan nås med "InstanceName.VariableName". Videre kan const variabler bli deklarert i metoder, mens det ikke er mulig å deklarere felt i felt.