Condividi tramite


Parola chiave const

Usare la parola chiave const per dichiarare un campo costante o una costante locale. I campi costanti e le variabili locali non sono variabili e non possono essere modificati. Le costanti possono essere numeri, valori booleani, stringhe o un riferimento Null. Non creare una costante per rappresentare le informazioni che si prevede di modificare in qualsiasi momento. Ad esempio, non usare un campo costante per archiviare il prezzo di un servizio, un numero di versione del prodotto o il nome del marchio di una società. Questi valori possono cambiare nel tempo e, poiché i compilatori propagano costanti, è necessario ricompilare altri codici compilati con le librerie per visualizzare le modifiche. Vedi anche la parola chiave readonly. Per esempio:

const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";

stringhe interpolate possono essere costanti, se tutte le espressioni usate sono anche stringhe costanti. Questa funzionalità può migliorare il codice che compila stringhe costanti:

const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";

Osservazioni

Il tipo di una dichiarazione costante specifica il tipo dei membri introdotti dalla dichiarazione. L'inizializzatore di una costante locale o di un campo costante deve essere un'espressione costante che può essere convertita in modo implicito nel tipo di destinazione.

Un'espressione costante è un'espressione che può essere valutata completamente in fase di compilazione. Di conseguenza, gli unici valori possibili per le costanti dei tipi riferimento sono stringhe e un riferimento Null.

La dichiarazione costante può dichiarare più costanti, ad esempio:

public const double X = 1.0, Y = 2.0, Z = 3.0;

Il modificatore static non è consentito in una dichiarazione costante.

Una costante può partecipare a un'espressione costante, come indicato di seguito:

public const int C1 = 5;
public const int C2 = C1 + 100;

Nota

La parola chiave readonly differisce dalla parola chiave const. Un campo const può essere inizializzato solo nella dichiarazione del campo. Un campo readonly può essere inizializzato nella dichiarazione o in un costruttore. Pertanto, readonly campi possono avere valori diversi a seconda del costruttore usato. Anche se un campo const è una costante in fase di compilazione, il campo readonly può essere usato per le costanti di runtime, come in questa riga: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Esempi

public class ConstTest
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int C1 = 5;
        public const int C2 = C1 + 5;

        public SampleClass(int p1, int p2)
        {
            x = p1;
            y = p2;
        }
    }

    static void Main()
    {
        var mC = new SampleClass(11, 22);
        Console.WriteLine($"x = {mC.x}, y = {mC.y}");
        Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
    }
}
/* Output
    x = 11, y = 22
    C1 = 5, C2 = 10
*/

Nell'esempio seguente viene illustrato come dichiarare una costante locale:

public class SealedTest
{
    static void Main()
    {
        const int C = 707;
        Console.WriteLine($"My local constant = {C}");
    }
}
// Output: My local constant = 707

Specifica del linguaggio C#

Per altre informazioni, vedere le sezioni seguenti della specifica del linguaggio C# :

Vedere anche