const (Riferimenti per C#)const (C# Reference)

Si usa la parola chiave const per dichiarare un campo costante o una variabile locale costante.You use the const keyword to declare a constant field or a constant local. I campi e le variabili locali costanti non sono variabili e non sono quindi modificabili.Constant fields and locals aren't variables and may not be modified. Gli elementi costanti possono essere numeri, valori booleani, stringhe o un riferimento Null.Constants can be numbers, Boolean values, strings, or a null reference. Non creare una costante per rappresentare informazioni di cui si prevede la modifica in qualsiasi momento.Don’t create a constant to represent information that you expect to change at any time. Un campo costante, ad esempio, non deve essere usato per archiviare il prezzo di un servizio, il numero di versione di un prodotto o il nome dell'organizzazione di una società.For example, don’t use a constant field to store the price of a service, a product version number, or the brand name of a company. Tali valori potrebbero cambiare nel tempo e, poiché i compilatori propagano le costanti, eventuale altro codice compilato con quelle librerie dovrebbe essere ricompilato per riflettere le modifiche.These values can change over time, and because compilers propagate constants, other code compiled with your libraries will have to be recompiled to see the changes. Vedere anche la parola chiave readonly.See also the readonly keyword. Ad esempio:For example:

const int x = 0;  
public const double gravitationalConstant = 6.673e-11;  
private const string productName = "Visual C#";  

NoteRemarks

Il tipo di una dichiarazione di costante specifica il tipo di membri introdotti dalla dichiarazione.The type of a constant declaration specifies the type of the members that the declaration introduces. L'inizializzatore di una variabile locale costante o di un campo costante deve essere un'espressione costante che possa essere convertita in modo implicito nel tipo di destinazione.The initializer of a constant local or a constant field must be a constant expression that can be implicitly converted to the target type.

Un'espressione di costanti è un'espressione che può essere valutata interamente in fase di compilazione.A constant expression is an expression that can be fully evaluated at compile time. Di conseguenza, gli unici valori possibili per le costanti dei tipi di riferimento sono string e il riferimento Null.Therefore, the only possible values for constants of reference types are string and a null reference.

La dichiarazione di costante può includere più costanti, ad esempio:The constant declaration can declare multiple constants, such as:

public const double x = 1.0, y = 2.0, z = 3.0;  

Il modificatore static non è consentito in una dichiarazione di costante.The static modifier is not allowed in a constant declaration.

Una costante può far parte di un'espressione costante, ad esempio:A constant can participate in a constant expression, as follows:

public const int c1 = 5;  
public const int c2 = c1 + 100;  

Nota

La parola chiave readonly è diversa dalla parola chiave const.The readonly keyword differs from the const keyword. Un campo const può essere inizializzato solo nella dichiarazione del campo.A const field can only be initialized at the declaration of the field. Un campo readonly può essere inizializzato nella dichiarazione o in un costruttore.A readonly field can be initialized either at the declaration or in a constructor. I campi readonly possono quindi presentare valori diversi a seconda del costruttore usato.Therefore, readonly fields can have different values depending on the constructor used. Inoltre, mentre un campo const rappresenta una costante in fase di compilazione, il campo readonly può essere usato per le costanti in fase di esecuzione, come nella riga seguente: public static readonly uint l1 = (uint)DateTime.Now.Ticks;Also, although a const field is a compile-time constant, the readonly field can be used for run-time constants, as in this line: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

EsempioExample

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()
    {
        SampleClass mC = new SampleClass(11, 22);
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2);
    }
}
/* Output
    x = 11, y = 22
    c1 = 5, c2 = 10
*/

EsempioExample

In questo esempio viene illustrato come usare le costanti come variabili locali.This example demonstrates how to use constants as local variables.

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

Specifiche del linguaggio C#C# Language Specification

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#.

Vedere ancheSee Also

Riferimenti per C#C# Reference
Guida per programmatori C#C# Programming Guide
Parole chiave di C#C# Keywords
ModificatoriModifiers
readonlyreadonly