Checked und Unchecked (C#-Referenz)Checked and Unchecked (C# Reference)

C#-Anweisungen könnten entweder in einem geprüften oder nicht geprüften Kontext (checked oder unchecked) ausgeführt werden.C# statements can execute in either checked or unchecked context. In einem überprüften Kontext löst der arithmetische Überlauf eine Ausnahme aus.In a checked context, arithmetic overflow raises an exception. In einem nicht aktivierten Kontext wird der arithmetische Überlauf ignoriert und das Ergebnis gekürzt, indem alle höherwertigen Bits verworfen werden, die nicht in den Zieltyp passen.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.

Die folgenden Vorgänge sind von der Überlaufüberprüfung betroffen:The following operations are affected by the overflow checking:

  • Ausdrücke, die die folgenden vordefinierten Operatoren für ganzzahlige Typen verwenden:Expressions using the following predefined operators on integral types:

    ++, --, unäres -, +, -, *, /++, --, unary -, +, -, *, /

  • Explizite numerische Konvertierungen zwischen ganzzahligen Typen oder von float oder double in einen integralen Typ.Explicit numeric conversions between integral types, or from float or double to an integral type.

Wenn weder checked noch unchecked festgelegt ist, wird der Standardkontext für nicht konstante Ausdrücke (Ausdrücke, die zur Laufzeit ausgewertet werden) vom Wert der Compileroption -checked definiert.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. Standardmäßig ist der Wert dieser Option nicht festgelegt, und arithmetische Operationen werden in einem nicht geprüften Kontext ausgeführt.By default the value of that option is unset and arithmetic operations are executed in an unchecked context.

Für konstante Ausdrücke (Ausdrücke, die zur Kompilierzeit vollständig ausgewertet werden können) ist der Standardkontext immer geprüft.For constant expressions (expressions that can be fully evaluated at compile time), the default context is always checked. Überläufe, die während der Auswertung des Ausdrucks zur Kompilierzeit auftreten, führen zu Kompilierzeitfehlern, wenn der konstante Ausdruck nicht explizit in einen ungeprüften Kontext gebracht wird.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.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
AnweisungsschlüsselwörterStatement Keywords