unchecked (Riferimenti per C#)

Aggiornamento: novembre 2007

La parola chiave unchecked viene utilizzata per eliminare il controllo dell'overflow nelle conversioni e nelle operazioni aritmetiche di tipo integrale.

In un contesto unchecked, se un'espressione produce un valore non compreso nell'intervallo del tipo di destinazione, il risultato verrà troncato. Esempio:

unchecked
{
    int val = 2147483647 * 2;
}

Poiché il calcolo sopra riportato viene eseguito in un blocco unchecked, il fatto che il risultato sia troppo grande per un numero intero viene ignorato e a val viene assegnato il valore -2. Per impostazione predefinita, la rilevazione dell'overflow è attivata e ha lo stesso effetto dell'utilizzo di checked.

Se nell'esempio precedente fosse stata omessa la parola chiave unchecked, si sarebbe verificato un errore di compilazione, perché l'espressione utilizza costanti e il risultato è noto in fase di compilazione. La parola chiave unchecked elimina inoltre la rilevazione dell'overflow per le espressioni non costanti, che altrimenti generano un'eccezione OverflowException in fase di esecuzione.

La parola chiave unchecked può essere utilizzata anche come operatore, in modo analogo al seguente:

public int UncheckedAdd(int a, int b)
{
    return unchecked(a + b);
}

Esempio

In questo esempio viene illustrato come utilizzare l'istruzione unchecked con espressioni costanti.

class TestClass 
{
    const int x = 2147483647;   // Max int 
    const int y = 2;

    static void Main() 
    {
        int z;
        unchecked 
        {
            z = x * y;
        }
        Console.WriteLine("Unchecked output value: {0}", z);
    }
}
// Output: Unchecked output value: -2

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 5.3.3.2 Istruzioni block, checked e unchecked

  • 7.5.12 Operatori checked e unchecked

  • 8.11 Istruzioni checked e unchecked

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Parole chiave di C#

Checked e Unchecked (Riferimenti per C#)

checked (Riferimenti per C#)

Altre risorse

Riferimenti per C#