d
checked
Оператор checked применяется для проверки на переполнение, которое возникает при выполнении арифметических действий с целочисленными значениями.
Если в блоке checked происходит переполнение, то вызывается исключение.
using System;
class One {
byte a = 254;
byte b;
public One(byte arg) {
b = arg;
}
public void Result() {
checked {
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b)));
}
}
}
class Program {
public static int Main() {
Console.Write("введите число : ");
byte val = byte.Parse(Console.ReadLine());
One O = new One(val);
O.Result();
Console.ReadKey();
return 0;
}
}
введите число : 2
Необработанное исключение: System.OverflowException: Переполнение в результате выполнения арифметической операции.
в One.Result() в d:\project\newCSharpConsole\0001\Main.cs:строка 11
в Program.Main() в d:\project\newCSharpConsole\0001\Main.cs:строка 21
Для продолжения нажмите любую клавишу . . .
Оператор unchecked применяется для проверки на переполнение, которое возникает при выполнении арифметических действий с целочисленными значениями.
Если в блоке unchecked происходит переполнение, то исключение не вызывается.
Если не указывать блок unchecked, то так же происходит переполнение. Тогда, какой смысл его указывать?
using System;
class One {
byte a = 254;
byte b;
public One(byte arg) {
b = arg;
}
public void Result1() {
//если произойдет переполнение, то исключение вызвано не будет
unchecked {
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b)));
}
}
public void Result2() {
//то же самое без оператора unchecked
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b)));
}
}
class Program {
public static int Main() {
Console.Write("введите число : ");
byte val = byte.Parse(Console.ReadLine());
One O = new One(val);
O.Result1();
O.Result2();
Console.ReadKey();
return 0;
}
}
введите число : 2
254 + 2 = 0
254 + 2 = 0
Оператор unchecked применяется для проверки на переполнение, которое возникает при выполнении арифметических действий с целочисленными значениями.
Нет там никаких проверок. Это обычное поведение любой программы, независимо от использованного языка