Оператор unchecked
Контекст unchecked задают блоком или
оборачивают выражение в unchecked(…).
При переполнении старшие биты отбрасываются
без исключения. Неконстантные целочисленные
выражения по умолчанию уже выполняются как
unchecked, а константные проверяются
как checked на этапе компиляции.
Синтаксис
unchecked { выражения }
unchecked(выражение)
Пример
Давайте сложим числа без проверки переполнения:
using System;
class Program
{
static void Main()
{
int a = 100;
int b = 23;
int res = unchecked(a + b);
Console.WriteLine(res);
}
}
Результат выполнения кода:
123
Пример
Давайте увидим переполнение у int.MaxValue:
using System;
class Program
{
static void Main()
{
int num = int.MaxValue;
int res = unchecked(num + 1);
Console.WriteLine(res);
}
}
Результат выполнения кода:
-2147483648
Пример
Давайте сравним явный unchecked и обычное сложение:
using System;
class Program
{
static void Main()
{
int num = int.MaxValue;
int a = num + 1;
int b = unchecked(num + 1);
Console.WriteLine(a == b);
}
}
Результат выполнения кода:
True
Пример
Давайте умножим в блоке unchecked:
using System;
class Program
{
static void Main()
{
int num = 100000;
int res;
unchecked
{
res = num * num;
}
Console.WriteLine(res);
}
}
Результат выполнения кода:
1410065408