Costanti (Guida per programmatori C#)

Le costanti sono valori immutabili noti in fase di compilazione e non modificati per l’intera vita del programma. Le costanti vengono dichiarate con il modificatore const. Solo i tipi incorporati in C# ( System.Object) possono essere dichiarati come const. Per un elenco dei tipi incorporati, vedere Tabella dei tipi incorporati (Riferimenti per C#). I tipi definiti dall'utente, fra cui classi, strutture e matrici, non possono essere const. Utilizzare il modificatore readonlyper creare una classe, una matrice o uno struct inizializzato una sola volta in fase di esecuzione (ad esempio in un costruttore) e non modificabile successivamente.

In C# non sono supportati metodi, proprietà o eventi const.

Il tipo enum consente di definire costanti denominate dei tipi incorporati interi (ad esempio int, uint, longe così via). Per ulteriori informazioni, vedere enum (Riferimenti per C#).

Le costanti devono essere inizializzate al momento stesso della dichiarazione. Di seguito è riportato un esempio.

class Calendar1
{
    public const int months = 12;
}

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

Nota

Porre attenzione nel fare riferimento a valori costanti definiti in altro codice, come ad esempio DLL. Se una nuova versione della DLL definisce un nuovo valore per la costante, il programma manterrà ancora il vecchio valore letterale finché non verrà ricompilato con riferimento alla nuova versione.

È possibile dichiarare contemporaneamente più costanti dello stesso tipo. Esempio:

class Calendar2
{
    const int months = 12, weeks = 52, days = 365;
}

L'espressione utilizzata per inizializzare una costante può fare riferimento a un'altra costante, purché non venga creato un riferimento circolare. Di seguito è riportato un esempio.

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

Le costanti possono essere contrassegnate come public, private, protected, internal o protected internal. Questi modificatori definiscono le modalità di accesso alla costante per gli utenti della classe. Per ulteriori informazioni, vedere Modificatori di accesso (Guida per programmatori C#).

L’accesso alle costanti avviene come se fossero campi statici, perché il valore della costante è lo stesso per tutte le istanze del tipo. Non viene utilizzata la parola chiave static per dichiararle. Nelle espressioni non contenute nella classe in cui è definita una costante, per accedere a quest'ultima è necessario utilizzare il nome della classe, seguito da un punto e dal nome della costante stessa. Di seguito è riportato un esempio.

int birthstones = Calendar.months;

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Classi e struct (Guida per programmatori C#)

Proprietà (Guida per programmatori C#)

Tipi (Guida per programmatori C#)

readonly (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Immutabilità nella parte uno di C#: tipi di immutabilità