Ohjelmointi

Kuinka käyttää const, readonly ja staattinen C #: ssä

Avainsanoja const, readonly ja staattinen käytetään usein ohjelmoitaessa C #: ssä. Vaikka näillä avainsanoilla on merkittäviä eroja, niillä on myös yhtäläisyyksiä, joiden vuoksi toisinaan on vaikea tietää, milloin niitä käytetään. Tässä artikkelissa käsitellään C #: n const-, staattinen ja readonly-avainsanoja, niiden vertailua ja miten meidän pitäisi käyttää niitä C # -sovelluksissamme.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo konsolisovellusprojekti Visual Studio 2019: ssä

Ensinnäkin, luodaan .NET Core -konsolisovellusprojekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi .NET Core -konsolisovellusprojekti Visual Studiossa noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”Console App (.NET Core)” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä seuraavan projektin nimi ja sijainti uuden Konfiguroi uusi projekti -ikkunassa.
  6. Napsauta Luo.

Tämä luo uuden .NET Core -konsolisovellusprojektin Visual Studio 2019: ssä. Tämän projektin avulla havainnollistetaan const, readonly ja staattisten avainsanojen käyttöä C #: ssä tämän artikkelin seuraavissa osissa.

Käytä const-avainsanaa C #: ssä

C #: n avainsanaa const (lue: vakio) käytetään määrittämään vakiomuuttuja, ts. Muuttuja, jonka arvo ei muutu ohjelman elinkaaren aikana. Siksi on välttämätöntä, että määrität arvon vakiomuuttujalle sen ilmoituksen yhteydessä.

Tämä vakiomuuttujan arvo tunnetaan myös nimellä "kokoamisaika". Muuttujat, jotka on ilmoitettu käyttämällä const-avainsanaa, tunnetaan myös kääntöaikavakiona. On huomattava, että vakiomuuttuja on muuttumaton, ts. Vakiomuuttujalle osoitettua arvoa ei voida muuttaa myöhemmin.

Seuraava koodinpätkä kuvaa, kuinka voit määrittää käännösaikavakion käyttämällä C #: n const-avainsanaa.

const string connectionString = "Määritä tietokannan yhteysmerkkijono tähän.";

Huomaa, että vakiomuuttujalle on määritettävä arvo määritettäessä sitä. Huomaa myös, että et voi käyttää const-avainsanaa vakioobjektin luomiseen. Const-avainsanaa voidaan käyttää vain primitiivisiin tietotyyppeihin (kuten intit, kelluvat, merkit ja loogiset) ja merkkijonoihin. Ymmärretään const-esimerkin käyttö.

Harkitse seuraavaa luokkaa nimeltä Kirjailija. Annamme Kirjoittaja-luokalle vain muutaman ominaisuuden, jotta se olisi yksinkertainen.

public class Kirjoittaja

    {

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

julkinen merkkijono Osoite {get; aseta; }

    }

Jos yrität nyt luoda vakioobjektin Author-luokan avulla const-avainsanalla, huomaat alla olevassa kuvassa 1 esitetyn kokoamisvirheen.

Tämä virhe osoittaa, että varausoperaattorin oikealla puolella tulisi olla vakioarvo lausekkeen tyydyttämiseksi. Koska lausunto uusi kirjailija () ei ole vakio, tehtävä ei ole kelvollinen ja tästä syystä virhe.

Käytä vain luku -avainta C #: ssä

Vain luku -avainsanaa voidaan käyttää muuttujan tai objektin määrittelemiseen vain luettavana. Tämä tarkoittaa, että muuttujalle tai objektille voidaan antaa arvo luokan laajuudessa tai vain konstruktorissa. Et voi muuttaa arvoa tai määrittää arvoa vain luku -muuttujaksi tai objektiksi millään muulla menetelmällä paitsi konstruktorilla.

Ymmärretään tämä esimerkillä. Harkitse seuraavaa luokkaa nimeltä DbManager.

julkisen luokan DbManager

    {

public readonly string connectionString =

"Määritä tietokannan yhteysmerkkijono tähän.";

julkinen DbManager ()

        {

connectionString = "Voit määrittää arvon uudelleen tähän.";

        }

public void ReAssign ()

        {

connectionString = "Tämä ei ole sallittua";

        }

    }

Yllä olevaa koodia ei koota, ja sinulle näytetään kuvassa 2 esitetty virhe.

Käytä staattista avainsanaa C #: ssä

C #: n staattista avainsanaa voidaan käyttää muuttujassa, menetelmässä tai objektissa. Huomaa, että luokan staattinen jäsen kuuluu objektin tyyppiin eikä tyypin esiintymään. Toisin sanoen staattisiin jäseniin luetaan luokan nimi, ei instanssin nimi.

Harkitse seuraavaa luokkaa nimeltä Utility, joka sisältää staattisen menetelmän.

julkisen luokan apuohjelma

    {

julkinen staattinen void SomeMethod ()

        {

// Kirjoita koodi tähän

        }

    }

Et voi kutsua menetelmää SomeMethod () käyttämällä Utility-luokan esiintymää. Sen sijaan sinun tulisi kutsua tätä menetelmää seuraavalla syntaksilla.

Utility.SomeMethod ();

Sama sääntö koskee staattista muuttujaa tai staattista objektia. Voit viitata luokan staattiseen jäseneen vain käyttämällä alla olevaa syntaksia.

Luokan nimi.Jäsen;

Tai

Luokan nimi.Jäsen();

Luokan rakentaja voi olla staattinen. Luokan staattista konstruktoria käytetään alustamaan luokan staattisia jäseniä. Luokan staattinen rakentaja ei kuitenkaan voi hyväksyä parametreja.

Sääntö const, readonly ja staattinen

Tässä on nyrkkisääntö, jota voit noudattaa työskennellessäsi const-, readonly- ja staattisten avainsanojen kanssa. Käytä const-avainsanaa, kun muuttujan sisältämä arvo ei koskaan muutu sovelluksen elinkaaren aikana. Käytä readonly-avainsanaa, kun et ole varma, onko kohteen muuttujan arvoa muutettava, mutta haluat estää muita luokkia muuttamasta arvoa. Käytä staattista avainsanaa, kun haluat luokan jäsenen kuuluvan tyyppiin eikä tyypin esiintymään.

Kuinka tehdä enemmän C #: ssä:

  • Tietomerkintöjen käyttäminen C #: ssä
  • Kuinka käyttää GUID-tunnuksia C # 8: ssa
  • Milloin abstraktia luokkaa vs. käyttöliittymää käytetään C #: ssä
  • Kuinka työskennellä AutoMapperin kanssa C #: ssä
  • Kuinka käyttää lambda-lausekkeita C #: ssä
  • Kuinka toimia Action-, Func- ja Predicate-edustajien kanssa C #: ssä
  • Kuinka työskennellä C #: n edustajien kanssa
  • Kuinka toteuttaa yksinkertainen kirjaaja C #: ssä
  • Kuinka työskennellä attribuuttien kanssa C #: ssä
  • Kuinka työskennellä log4netin kanssa C #: ssä
  • Kuinka toteuttaa arkiston suunnittelumalli C #: ssä
  • Kuinka työskennellä heijastuksen kanssa C #: ssä
  • Kuinka työskennellä tiedostojärjestelmän katselijan kanssa C #: ssä
  • Kuinka tehdä laiska alustus C #: ssä
  • Kuinka työskennellä MSMQ: n kanssa C #: ssä
  • Kuinka työskennellä laajennusmenetelmien kanssa C #: ssä
  • Kuinka meille lambda-lausekkeet C #: ssä
  • Milloin haihtuvaa avainsanaa käytetään C #: ssä
  • Tuottoavainsanan käyttäminen C #: ssä
  • Kuinka toteuttaa polymorfismi C #: ssa
  • Kuinka rakentaa oma tehtävän ajastin C #
  • Kuinka työskennellä RabbitMQ: n kanssa C #: ssä
  • Kuinka työskennellä C #: n kanssa
  • Virtuaalisten ja abstraktien menetelmien tutkiminen C #: ssä
  • Kuinka käyttää Dapper ORMia C #: ssä
  • Lentopainokuvion käyttäminen C #: ssä
$config[zx-auto] not found$config[zx-overlay] not found