Constanten (C#-programmeerhandleiding)
Constanten zijn onveranderbare waarden die bekend zijn tijdens het compileren en die niet veranderen voor de levensduur van het programma. Constanten worden gedeclareerd met de const modifier. Alleen de ingebouwde C# -typen kunnen worden gedeclareerd als const
. Andere referentietypeconstanten dan String kunnen alleen worden geïnitialiseerd met een null-waarde . Door de gebruiker gedefinieerde typen, waaronder klassen, structs en matrices, kunnen niet zijn const
. Gebruik de leesbare wijzigingsfunctie om een klasse, struct of matrix te maken die één keer tijdens runtime is geïnitialiseerd (bijvoorbeeld in een constructor) en daarna niet meer kan worden gewijzigd.
C# biedt geen ondersteuning voor const
methoden, eigenschappen of gebeurtenissen.
Met het enumtype kunt u benoemde constanten definiëren voor integrale ingebouwde typen (bijvoorbeeld int
uint
long
, enzovoort). Zie enum voor meer informatie.
Constanten moeten worden geïnitialiseerd wanneer ze worden gedeclareerd. Voorbeeld:
class Calendar1
{
public const int Months = 12;
}
In dit voorbeeld is de constante Months
altijd 12 en kan deze niet worden gewijzigd, zelfs niet door de klasse zelf. Wanneer de compiler een constante id in C#-broncode tegenkomt (bijvoorbeeld Months
), vervangt deze de letterlijke waarde rechtstreeks in de tussentaalcode (IL) die wordt geproduceerd. Omdat er geen variabel adres is gekoppeld aan een constante tijdens runtime, const
kunnen velden niet worden doorgegeven door verwijzing en kunnen ze niet worden weergegeven als een l-waarde in een expressie.
Notitie
Wees voorzichtig wanneer u verwijst naar constante waarden die zijn gedefinieerd in andere code, zoals DLL's. Als een nieuwe versie van het DLL-bestand een nieuwe waarde definieert voor de constante, bevat uw programma nog steeds de oude letterlijke waarde totdat deze opnieuw wordt gecompileerd op basis van de nieuwe versie.
Meerdere constanten van hetzelfde type kunnen tegelijkertijd worden gedeclareerd, bijvoorbeeld:
class Calendar2
{
public const int Months = 12, Weeks = 52, Days = 365;
}
De expressie die wordt gebruikt om een constante te initialiseren, kan verwijzen naar een andere constante als er geen kringverwijzing wordt gemaakt. Voorbeeld:
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;
}
Constanten kunnen worden gemarkeerd als openbaar, privé, beveiligd, intern, beveiligd intern of privé beveiligd. Deze toegangsaanpassingen definiëren hoe gebruikers van de klasse toegang hebben tot de constante. Zie Toegangsmodifiers voor meer informatie.
Constanten worden geopend alsof het statische velden zijn, omdat de waarde van de constante hetzelfde is voor alle exemplaren van het type. U gebruikt het static
trefwoord niet om ze te declareren. Expressies die zich niet in de klasse bevinden die de constante definiëren, moeten de klassenaam, een punt en de naam van de constante gebruiken om toegang te krijgen tot de constante. Voorbeeld:
int birthstones = Calendar.Months;
C#-taalspecificatie
Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.