Costanti (Guida per programmatori C#)

Le costanti sono valori non modificabili, che sono noti nella fase di compilazione e non cambiano per la durata del programma. Le costanti vengono dichiarate con il modificatore const. Solo i tipi predefiniti C# possono essere dichiarati come const. Le costanti del tipo di riferimento diverse da String possono essere inizializzate solo con un valore Null . I tipi definiti dall'utente, incluse le classi, gli struct e le matrici, non possono essere const. Usare il modificatore readonly per creare una classe, uno struct o una matrice inizializzata una volta in fase di esecuzione (ad esempio in un costruttore) e successivamente non può essere modificata.

C# non supporta metodi, proprietà o eventi const.

Il tipo enum consente di definire costanti denominate per i tipi incorporati interi (ad esempio int, uint, long e così via). Per altre informazioni, vedere enum.

Le costanti devono essere inizializzate come vengono dichiarate. Ad esempio:

class Calendar1
{
    public const int Months = 12;
}

In questo esempio la costante Months è sempre 12 e non può essere modificata neanche dalla stessa classe. In realtà, quando il compilatore incontra un identificatore costante nel codice sorgente C# (ad esempio Months), lo sostituisce direttamente con il relativo valore letterale nel codice Intermediate Language (IL) che produce. Poiché non esiste alcun indirizzo di variabile associato a una costante in fase di esecuzione, i campi const non possono essere passati per riferimento e non possono sostituire un l-value in un'espressione.

Nota

Prestare attenzione quando si creano riferimenti a valori costanti definiti in un altro codice, ad esempio in file DLL. Se una nuova versione della DLL definisce un nuovo valore per la costante, il programma mantiene il vecchio valore letterale finché non viene ricompilato per la nuova versione.

È possibile dichiarare contemporaneamente più costanti dello stesso tipo, ad esempio:

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

L'espressione usata per inizializzare una costante può fare riferimento a un'altra costante, a condizione che crei un riferimento circolare. Ad esempio:

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;
}

Le costanti possono essere contrassegnate come public, private, protected, internal, protected internal o private protected. Questi modificatori definiscono l'accesso alla costante per gli utenti della classe. Per altre informazioni, vedere Modificatori di accesso.

L’accesso alle costanti avviene come se fossero campi statici, perché il valore della costante è lo stesso per tutte le istanze del tipo. Per dichiararle non viene usata la parola chiave static. Per accedere alla costante, le espressioni non incluse nella classe che la definisce devono usare il nome della classe seguito da un punto e dal nome della costante stessa. Ad esempio:

int birthstones = Calendar.Months;

Specifiche del linguaggio C#

Per altre informazioni, vedere la specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedi anche