Condividi tramite


Costanti (Guida per programmatori C#)

Aggiornamento: novembre 2007

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 struttura o una matrice inizializzate una sola volta in fase di esecuzione (ad esempio in un costruttore) e non modificabili 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 la classe enum (Riferimenti per C#).

Le costanti devono essere inizializzate al momento stesso della dichiarazione. 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. 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 protectedinternal. Questi modificatori definiscono le modalità di accesso alla costante per gli utenti della classe. Per ulteriori informazioni, vedere la classe 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. Esempio:

int birthstones = Calendar.months;

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la seguente sezione inclusa in Specifiche del linguaggio C#:

  • 10.4 Costanti

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Classi e strutture (Guida per programmatori C#)

Proprietà (Guida per programmatori C#)

Tipi (Guida per programmatori C#)

readonly (Riferimenti per C#)

Altre risorse

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