Programmering

Sådan bruges const, readonly og static i C #

Nøgleordene const, readonly og static bruges ofte ved programmering i C #. Selvom disse nøgleord har vigtige forskelle, har de også ligheder, der undertiden gør det svært at vide, hvornår man skal bruge hvilket. Denne artikel diskuterer const, statiske og readonly nøgleord i C #, hvordan de sammenligner, og hvordan vi skal bruge dem i vores C # applikationer.

For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.

Opret et konsolapplikationsprojekt i Visual Studio 2019

Lad os først oprette et .NET Core-konsolapplikationsprojekt i Visual Studio. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge nedenstående trin for at oprette et nyt .NET Core-konsolapplikationsprojekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klik på "Opret nyt projekt."
  3. I vinduet "Opret nyt projekt" skal du vælge "Konsolapp (.NET Core)" fra listen over skabeloner, der vises.
  4. Klik på Næste.
  5. I vinduet "Konfigurer dit nye projekt", der vises nedenfor, skal du angive navnet og placeringen for det nye projekt.
  6. Klik på Opret.

Dette opretter et nyt .NET Core-konsolapplikationsprojekt i Visual Studio 2019. Vi bruger dette projekt til at illustrere brugen af ​​const, readonly og statiske nøgleord i C # i de efterfølgende afsnit i denne artikel.

Brug const-nøgleordet i C #

Nøgleordet const (læs: konstant) i C # bruges til at definere en konstant variabel, dvs. en variabel, hvis værdi ikke vil ændre sig i løbet af programmet. Derfor er det bydende nødvendigt, at du tildeler en værdi til en konstant variabel på tidspunktet for dens erklæring.

Denne værdi af en konstant variabel er også kendt som en "kompileringstid" -værdi. Variabler, der er deklareret ved hjælp af const-nøgleordet, kaldes også kompileringstidskonstanter. Det skal bemærkes, at en konstant variabel er uforanderlig, dvs. den værdi, der er tildelt en konstant variabel, kan ikke ændres senere.

Følgende kodestykke illustrerer, hvordan du kan definere en kompileringstidskonstant ved hjælp af const-nøgleordet i C #.

const string connectionString = "Angiv din databaseforbindelsesstreng her.";

Bemærk, at du skal tildele en værdi til en konstant variabel på det tidspunkt, du definerer den. Bemærk også, at du ikke kan bruge const-nøgleordet til at oprette et konstant objekt. Const-nøgleordet kan kun anvendes på de primitive datatyper (såsom ints, floats, chars og booleans) og strings. Lad os forstå brugen af ​​const med et eksempel.

Overvej følgende klasse ved navn Forfatter. Vi giver forfatterklassen kun nogle få egenskaber for at gøre det enkelt.

offentlig klasse Forfatter

    {

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

public string Address {get; sæt; }

    }

Hvis du nu forsøger at oprette et konstant objekt fra forfatterklassen ved hjælp af const-nøgleordet, overholder du kompileringsfejl vist i figur 1 nedenfor.

Denne fejl indikerer, at tildelingsoperatørens højre side skal have en konstant værdi for at tilfredsstille udtrykket. Fordi udsagnet ny forfatter () er ikke en konstant, opgaven er ikke gyldig og dermed fejlen.

Brug det readonly nøgleord i C #

Det readonly nøgleord kan bruges til at definere en variabel eller et objekt som kun læsbart. Dette betyder, at variablen eller objektet kun kan tildeles en værdi i klassens omfang eller i en konstruktør. Du kan ikke ændre værdien eller tildele en værdi til en readonly-variabel eller -objekt i nogen anden metode undtagen konstruktøren.

Lad os forstå dette med et eksempel. Overvej følgende klasse ved navn DbManager.

offentlig klasse DbManager

    {

offentlig readonly string connectionString =

"Angiv din databaseforbindelsesstreng her.";

offentlig DbManager ()

        {

connectionString = "Du kan tildele en værdi her.";

        }

offentlig ugyldig ReAssign ()

        {

connectionString = "Dette er ikke tilladt";

        }

    }

Ovenstående kode kompileres ikke, og du får vist fejlen vist i figur 2.

Brug det statiske nøgleord i C #

Det statiske nøgleord i C # kan bruges på en variabel, en metode eller et objekt. Bemærk, at et statisk medlem af en klasse hører til objekttypen snarere end til forekomsten af ​​typen. Med andre ord er der adgang til statiske medlemmer med navnet på klassen, ikke navnet på en forekomst.

Overvej følgende klasse med navnet Utility, der indeholder en statisk metode.

public class Utility

    {

offentlig statisk ugyldighed SomeMethod ()

        {

// Skriv din kode her

        }

    }

Du kan ikke ringe til metoden SomeMethod () ved hjælp af en forekomst af klassen Utility. I stedet skal du kalde denne metode ved hjælp af følgende syntaks.

Utility.SomeMethod ();

Den samme regel gælder for en statisk variabel eller et statisk objekt. Du kan kun henvise til et statisk medlem af en klasse ved hjælp af syntaksen vist nedenfor.

ClassName.Medlem;

Eller

ClassName.Medlem();

En konstruktør i en klasse kan være statisk. En statisk konstruktør af en klasse bruges til at initialisere de statiske medlemmer af klassen. En statisk konstruktør i en klasse kan dog ikke acceptere parametre.

En regel for const, readonly og static

Her er tommelfingerreglen, du kan følge, når du arbejder med const, readonly og statiske nøgleord. Brug const-nøgleordet, når værdien i en variabel aldrig vil ændre sig i løbet af applikationens levetid. Brug det skrivebeskyttede nøgleord, når du ikke er sikker på, om værdien af ​​en variabel for et objekt skal ændres, men du vil forhindre, at andre klasser ændrer værdien. Brug det statiske nøgleord, når du vil have, at medlem af en klasse skal høre til typen i stedet for til forekomsten af ​​typen.

Sådan gør du mere i C #:

  • Sådan bruges datanoteringer i C #
  • Sådan arbejder du med GUID'er i C # 8
  • Hvornår skal man bruge en abstrakt klasse vs. interface i C #
  • Sådan arbejder du med AutoMapper i C #
  • Sådan bruges lambda-udtryk i C #
  • Sådan arbejder du med Action-, Func- og Predicate-delegerede i C #
  • Sådan arbejder du med delegerede i C #
  • Sådan implementeres en simpel logger i C #
  • Sådan arbejder du med attributter i C #
  • Sådan arbejder du med log4net i C #
  • Sådan implementeres depotdesignmønsteret i C #
  • Sådan arbejder du med refleksion i C #
  • Sådan arbejder du med filsystemwatcher i C #
  • Sådan udføres doven initialisering i C #
  • Sådan arbejder du med MSMQ i C #
  • Sådan arbejder du med udvidelsesmetoder i C #
  • Hvordan vi lambda-udtryk i C #
  • Hvornår skal du bruge det flygtige nøgleord i C #
  • Sådan bruges afkastnøgleordet i C #
  • Sådan implementeres polymorfisme i C #
  • Sådan bygger du din egen opgaveplanlægning i C #
  • Sådan arbejder du med RabbitMQ i C #
  • Sådan arbejder du med en tuple i C #
  • Udforskning af virtuelle og abstrakte metoder i C #
  • Sådan bruges Dapper ORM i C #
  • Sådan bruges designmønsteret med flyvægt i C #
$config[zx-auto] not found$config[zx-overlay] not found