Оператор unchecked применяется для проверки на переполнение, которое возникает при выполнении арифметических действий с целочисленными значениями.
Если в блоке unchecked происходит переполнение, то исключение не вызывается.
Если не указывать блок unchecked, то так же происходит переполнение. Тогда, какой смысл его указывать?
Если в блоке unchecked происходит переполнение, то исключение не вызывается.
Если не указывать блок unchecked, то так же происходит переполнение. Тогда, какой смысл его указывать?
Main.cs
usingSystem;classOne {-
bytea = 254; -
byteb; -
publicOne(bytearg) { -
b = arg; -
} -
publicvoidResult1() { -
//если произойдет переполнение, то исключение вызвано не будет -
unchecked{ -
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b))); -
} -
} -
publicvoidResult2() { -
//то же самое без оператора unchecked -
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b))); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("введите число : "); -
byteval =byte.Parse(Console.ReadLine()); -
One O =newOne(val); -
O.Result1(); -
O.Result2(); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
bytea = 254; -
byteb; -
publicOne(bytearg) { -
b = arg; -
} -
publicvoidResult1() { -
//если произойдет переполнение, то исключение вызвано не будет -
unchecked{ -
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b))); -
} -
} -
publicvoidResult2() { -
//то же самое без оператора unchecked -
Console.WriteLine("{0} + {1} = {2}", a, b, ((byte)(a + b))); -
} }classProgram {-
publicstaticintMain() { -
Console.Write("введите число : "); -
byteval =byte.Parse(Console.ReadLine()); -
One O =newOne(val); -
O.Result1(); -
O.Result2(); -
Console.ReadKey(); -
return0; -
} }
введите число : 2
254 + 2 = 0
254 + 2 = 0
254 + 2 = 0
254 + 2 = 0