Share via


Konstanter (C#-programmeringsguide)

Konstanter är oföränderliga värden som är kända vid kompileringstid och inte ändras under programmets livslängd. Konstanter deklareras med const-modifieraren . Endast de inbyggda C# -typerna kan deklareras som const. Andra referenstypskonstanter än String vad som bara kan initieras med ett null-värde . Användardefinierade typer, inklusive klasser, structs och matriser, får inte vara const. Använd skrivskyddad modifierare för att skapa en klass, struct eller matris som initieras en gång vid körning (till exempel i en konstruktor) och därefter inte kan ändras.

C# stöder const inte metoder, egenskaper eller händelser.

Med uppräkningstypen kan du definiera namngivna konstanter för integrerade inbyggda typer (till exempel int, uint, longoch så vidare). Mer information finns i uppräkning.

Konstanter måste initieras när de deklareras. Till exempel:

class Calendar1
{
    public const int Months = 12;
}

I det här exemplet är konstanten Months alltid 12 och kan inte ändras ens av själva klassen. Faktum är att när kompilatorn stöter på en konstant identifierare i C#-källkoden (till exempel Months), ersätter den literalvärdet direkt med den mellanliggande språkkod (IL) som den producerar. Eftersom det inte finns någon variabeladress associerad med en konstant vid körning kan const fält inte skickas med referens och kan inte visas som ett l-värde i ett uttryck.

Kommentar

Var försiktig när du refererar till konstanta värden som definierats i annan kod, till exempel DLL:er. Om en ny version av DLL definierar ett nytt värde för konstanten, kommer programmet fortfarande att innehålla det gamla literalvärdet tills det omkompileras mot den nya versionen.

Flera konstanter av samma typ kan deklareras samtidigt, till exempel:

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

Uttrycket som används för att initiera en konstant kan referera till en annan konstant om det inte skapar en cirkelreferens. Till exempel:

class Calendar3
{
    public const int Months = 12;
    public const int Weeks = 52;
    public const int Days = 365;

    public const double DaysPerWeek = (double) Days / (double) Weeks;
    public const double DaysPerMonth = (double) Days / (double) Months;
}

Konstanter kan markeras som offentliga, privata, skyddade, interna, skyddade interna eller privata skyddade. Dessa åtkomstmodifierare definierar hur användare av klassen kan komma åt konstanten. Mer information finns i Åtkomstmodifierare.

Konstanter används som om de vore statiska fält eftersom värdet för konstanten är detsamma för alla instanser av typen. Du använder inte nyckelordet static för att deklarera dem. Uttryck som inte finns i klassen som definierar konstanten måste använda klassnamnet, en punkt och namnet på konstanten för att få åtkomst till konstanten. Till exempel:

int birthstones = Calendar.Months;

Språkspecifikation för C#

Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även