unchecked (C#-Referenz)

Aktualisiert: November 2007

Das unchecked-Schlüsselwort wird verwendet, um die Überlaufprüfung für arithmetische Operationen und Konvertierungen mit ganzzahligen Typen zu unterdrücken.

Wenn ein Ausdruck in einem nicht geprüften Kontext einen Wert erzeugt, der außerhalb des Gültigkeitsbereichs des Zieltyps liegt, wird das Ergebnis abgeschnitten. Beispiel:

unchecked
{
    int val = 2147483647 * 2;
}

Da die obige Berechnung in einem unchecked-Block erfolgt, wird die Tatsache ignoriert, dass das Ergebnis zu groß für eine ganze Zahl ist, und val wird der Wert -2 zugewiesen. Standardmäßig ist die Überlauferkennung aktiviert, was dieselbe Wirkung wie die Verwendung von checked hat.

Wenn im obigen Beispiel unchecked ausgelassen wird, tritt ein Kompilierungsfehler auf, da der Ausdruck Konstanten verwendet und das Ergebnis zur Kompilierzeit bekannt ist. Das unchecked-Schlüsselwort unterdrückt die Überlauferkennung auch für Ausdrücke ohne Konstanten, die andernfalls zur Laufzeit zu OverflowException führen würden.

Das unchecked-Schlüsselwort kann auch als Operator verwendet werden:

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

Beispiel

In diesem Beispiel wird veranschaulicht, wie die unchecked-Anweisung mit konstanten Ausdrücken verwendet wird.

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

C#-Programmiersprachenspezifikation

Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:

  • 5.3.3.2 Blockanweisungen, die checked-Anweisung und die unchecked-Anweisung

  • 7.5.12 Der Operator "checked" und der Operator "unchecked"

  • 8.11 Die checked-Anweisung und die unchecked-Anweisung

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

C#-Schlüsselwörter

Checked und Unchecked (C#-Referenz)

checked (C#-Referenz)

Weitere Ressourcen

C#-Referenz