где
Ниже приведен пример программы, в котором демонстрируется применение ключевых слов checked и unchecked.
// Продемонстрировать применение ключевых слов checked и unchecked.
using System;"
class CheckedDemo { static void Main { byte a, b; byte result;
a = 127; b = 127;
try {
result = unchecked((byte) (a * b));
Console.WriteLine("Непроверенный на переполнение результат: " + result);
result = checked((byte)(a * b)); // эта операция приводит к
// исключительной ситуации Console.WriteLine("Проверенный на переполнение результат: " + result); //не подлежит выполнению
}
catch (OverflowException exc) {
Console.WriteLine(exc);
}
}
}
При выполнении этой программы получается следующий результат.
Непроверенный на переполнение результат: 1 System.OverflowException: Переполнение в результате выполнения арифметической операции.
в CheckedDemo.Main в
Как видите, результат вычисления непроверяемого выражения был усечен. А вычисление проверяемого выражения привело к исключительной ситуации.
В представленном выше примере программы было продемонстрировано применение ключевых слов checked и unchecked в одном выражении. А в следующем примере программы показывается, каким образом проверяется и не проверяется на переполнение целый блок операторов.
// Продемонстрировать применение ключевых слов checked // и unchecked в блоке операторов.
using System;
class CheckedBlocks { static void Main { byte a, b; byte result;
a = 127; b = 127;
try {
unchecked { a = 127; b = 127;
result = unchecked((byte)(a * b));
Console.WriteLine("Непроверенный на переполнение результат: " + result);
а = 125; b = 5;
result = unchecked((byte)(a * b));
Console.WriteLine("Непроверенный на переполнение результат: " + result);
}
checked { a = 2; b = 7;
result = checked((byte)(a * b)); // верно
Console.WriteLine("Проверенный на переполнение результат: " + result);
а = 127; b = 127;
result = checked((byte)(a * b)); // эта операция приводит к
// исключительной ситуации Console.WriteLine("Проверенный на переполнение результат: " + result); //не подлежит выполнению
}
. }
catch (OverflowException exc) {
Console.WriteLine(exc);
}
}
}
Результат выполнения этой программы приведен ниже.