unchecked (справочник по C#)
Обновлен: Ноябрь 2007
Ключевое слово unchecked используется для подавления проверки переполнения при выполнении арифметических операций и преобразований с данными целого типа.
Если в непроверяемом контексте результатом выполнения выражения является значение, выходящее за допустимые пределы значений конечного типа, то результат усекается. Например:
unchecked
{
int val = 2147483647 * 2;
}
Так как приведенное выше вычисление выполняется в блоке unchecked, то факт превышения результатом размера целого типа игнорируется и переменной val присваивается значение -2. По умолчанию обнаружения переполнения включено, что равноценно использованию ключевого слова checked.
Если в приведенном выше примере опустить ключевое слово unchecked, то будет выдана ошибка компиляции, потому что в этом выражении используются константы и результат известен во время компиляции. Ключевое слово unchecked также подавляет обнаружение переполнения в выражениях, состоящих не из констант, которые иначе приводили бы к генерированию исключения OverflowException во время выполнения.
Ключевое слово unchecked может быть также использовано в качестве оператора, как показано ниже:
public int UncheckedAdd(int a, int b)
{
return unchecked(a + b);
}
Пример
В этом примере показано, как использовать оператор unchecked с выражениями из констант.
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#
Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:
5.3.3.2 Инструкции блоков, инструкции с ключевыми словами checked и unchecked
7.5.12 Операторы checked и unchecked
8.11 Инструкции с ключевыми словами checked и unchecked
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Checked и Unchecked (Справочник по C#)