Vakaa ja ReadOnly
On tärkeää ymmärtää C # -ohjelmiston käsitteet ennen kuin noudatat koodin käyttöönottoa. Ennen siirtymistä eroihin const ja vain readonly, ymmärrämme avainsanat ensin ja miten niitä käytetään ohjelmassa. Molemmat ovat yleisimmät avainsanat, joita käytetään C # -ohjelmoinnissa ja periaatteessa samaan tarkoitukseen. Kuitenkin molemmat avainsanat ovat hyvin erilaisia toisistaan. Const on varattu sana, jota käytetään edesauttamaan vakioarvot, ja se määrittää, että arvoa ei voi muokata kääntämisen jälkeen, kun taas readonly on modifioija, jota voidaan käyttää kentillä ja joiden arvoa voidaan muuttaa suoritusaikana. Katsotaanpa joitakin keskeisiä eroja const ja readonly.
Mikä Const on?
Const viittaa vakio-muuttujaan, jonka arvoa on annettava vain kerran ilmoituksen aikana. Kun avainsanaa const käytetään ilmoituksen aikana, se muuttuu vakioarvoksi, mutta arvo pysyy vakiona eikä sitä voi muuttaa koko ohjelman ajan. Se on enemmän varattua sanaa, joka määrittää, että arvoa ei saa muuttaa kääntämisen jälkeen. Const on implisiittisesti staattinen oletusarvoisesti, joten se voidaan kutsua luokan nimellä käyttämällä "Classname.VariableName". Vakiovälineitä kutsutaan myös kirjaimiksi. Se voi olla mistä tahansa perustietotyypistä, kuten kokonaislukuarvo, kelluva const tai merkkijono.
Mikä on ReadOnly?
Readonly-avainsana on modifioija, jota voidaan käyttää vain kentillä, mutta ei paikallisissa muuttujissa. Vain kenttä voidaan alustaa joko lausumisajankohtana tai samaan luokkaan kuuluvan konstruktorin sisällä, joten arvot voivat olla erilaisia eri ohjelman toteutuksille riippuen käytetystä konstruktorista. Readonly-avainsanalla määrätään, että objektin esiintymismuuttuja ei ole muokattavissa, ja kaikki yritykset muokata sitä ilmoituksen tulosten jälkeen kokoamisvirheen jälkeen. Muuttujaa ei muuteta ennen toteutuksen jälkeen. Muuttujat tehdään vain lukujen lopettamiseksi, jotta koodi ei vahingossa muutu sen jälkeen, kun se on rakennettu.
Vakio ja ReadOnly ero
Vakio (const) avainsana ei ole muuta kuin muuttumatonta muuttujaa, jonka arvoa voidaan alustaa vain koottua aikaa. Näitä vakioarvoja kutsutaan myös kirjaimiksi. Sen avulla voimme vain määrittää, onko muuttuja muunneltavissa vai ei. Yksinkertaisilla termeillä vakiot ovat epäsuorasti staattisia ja ne on alustettava ennen kuin niitä käytetään ohjelmassa. Toisin sanoen vain avainsana on modifioija, jota voidaan käyttää kentillä ja joiden arvoa voidaan muuttaa ajon aikana. Se estää kenttien muuttamisen ja arvot, jotka voidaan asettaa viite-muuttujien kautta.
Const on staattinen oletusarvoisesti, ja arvot, jotka olisi annettava muuttujan ilmoituksen aikaan, jolloin arvot määritetään vain koottaessa. Vakio ilmoitetaan käyttämällä const-avainsanaa. Vakiokentän alustuksen on oltava vakio ilmaus eikä sitä saa muuttaa. Yksinkertaisesti sanottuna const on kääntämisajan vakio. Toisaalta vain luentokenttä voidaan alustaa vain luokan tasolla, jota ei ole menetelmän sisällä, eikä kenttää voida muuttaa alustuksen jälkeen. Toisin sanoen readonly-muuttujat voidaan alustaa ilmoituksen aikaan tai rakentajan sisällä.
Vakioarvo asetetaan suoraan koodiin, koska se toimii kääntöaikaa korvaavana. Kääntäjä asettaa vakioarvon kokoonpanon metatietoihin, jotka määrittelevät vakion ja sisällyttävät arvon itsessään IL-koodiin itse alustuksen jälkeen, joten vakaille ei tarvita muistiota ajon aikana. Vain lukuarvo ei ole vakio ja se tallennetaan lataajan kasaan muistia, jota ei voida jakaa, kunnes sen tyyppi on ladattu. Readonly-kentät tallennetaan dynaamiseen muistiin, jotta arvot voidaan saada vain ajon aikana.
Vaikka molempia avainsanoja käytetään lähes samaan tarkoitukseen, niillä on erilainen binääriversio-semantiikka. Kun lauseke viittaa vakioon, kääntäjä upottaa arvon kääntöaikaan.Joten jos arvoa käytetään eri kokoonpanossa, alkuperäinen kokoonpano on päivitettävä ja arvoa on muutettava. Kokoonpanon muutoksia ei näy, ennen kuin se käännetään uudelleen. Arvoa ei saavuteta, kunnes suoritusaika, kun ilmaisu viittaa lukukenttään. Jos arvoa muutetaan toisessa kokoonpanossa, muutokset näkyvät kokoonpanossa heti, kun ne ladataan ilman, että niitä tarvitsee kääntää uudelleen.
Const vs. Readonly: vertailukaavio
Yhteenveto Const vs. Readonly
Molempia avainsanoja käytetään samaan asiaan, joka on ilmoittaa jäsenelle, jotta arvot eivät voi muuttua koko ohjelman ajan. Kuitenkin const-avainsana on hyvin erilainen kuin vain avainsana. Const on muuttuva muuttuja, jonka arvo alustetaan koottuaikaa, kun taas vain kenttä voidaan alustaa luokkatasolla joko ilmoituksen antamishetkellä tai konstruktorin sisällä. Const on kääntämisajan vakio, kun taas readonly kentät ovat vain luettavissa. Constance-muuttujia voi käyttää käyttämällä "Classname.VariableName", kun taas readonly-muuttujia voidaan käyttää käyttämällä "InstanceName.VariableName". Lisäksi const muuttujat voidaan ilmoittaa menetelmissä, kun taas vain kenttiä ei voida ilmoittaa menetelmissä.