Checked e Unchecked (Riferimenti per C#)Checked and Unchecked (C# Reference)

È possibile eseguire istruzioni C# in contesti verificati o non verificati.C# statements can execute in either checked or unchecked context. In un contesto verificato l'overflow aritmetico genera un'eccezione.In a checked context, arithmetic overflow raises an exception. In un contesto non verificato, l'overflow aritmetico viene ignorato e il risultato viene troncato mediante l'eliminazione di tutti i bit più significativi che non corrispondono al tipo di destinazione.In an unchecked context, arithmetic overflow is ignored and the result is truncated by discarding any high-order bits that don't fit in the destination type.

  • checked Specificare il contesto verificato.checked Specify checked context.

  • unchecked Specificare il contesto non verificato.unchecked Specify unchecked context.

Le operazioni seguenti sono interessate dal controllo di overflow:The following operations are affected by the overflow checking:

  • Espressioni che usano gli operatori predefiniti seguenti su tipi integrali:Expressions using the following predefined operators on integral types:

    ++, --, - unario, +, -, *, /++, --, unary -, +, -, *, /

  • Conversioni numeriche esplicite tra tipi integrali oppure da float o double a un tipo integrale.Explicit numeric conversions between integral types, or from float or double to an integral type.

Se non si specifica checkedunchecked, il contesto predefinito per le espressioni non costanti (espressioni che vengono valutate in fase di esecuzione) è definito dal valore dell'opzione del compilatore -checked.If neither checked nor unchecked is specified, the default context for non-constant expressions (expressions that are evaluated at run time) is defined by the value of the -checked compiler option. Per impostazione predefinita il valore di tale opzione non è impostato e le operazioni aritmetiche vengono eseguite in un contesto non verificato.By default the value of that option is unset and arithmetic operations are executed in an unchecked context.

Per le espressioni costanti (espressioni che possono essere valutate per intero in fase di compilazione), il contesto predefinito viene sempre controllato.For constant expressions (expressions that can be fully evaluated at compile time), the default context is always checked. A meno che un'espressione costante non venga posizionata in modo esplicito in un contesto non verificato, gli overflow che si verificano durante la valutazione in fase di compilazione dell'espressione causano errori in fase di compilazione.Unless a constant expression is explicitly placed in an unchecked context, overflows that occur during the compile-time evaluation of the expression cause compile-time errors.

Vedere ancheSee also