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
Referenz
Checked und Unchecked (C#-Referenz)