Поделиться через


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#

Ссылки

Ключевые слова C#

Checked и Unchecked (Справочник по C#)

checked (Справочник по C#)

Другие ресурсы

Справочник по C#