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
Riferimenti
Checked e Unchecked (Riferimenti per C#)