unchecked

Оператор unchecked применяется для проверки на переполнение, которое возникает при выполнении арифметических действий с целочисленными значениями.
Если в блоке unchecked происходит переполнение, то исключение не вызывается.
Если не указывать блок unchecked, то так же происходит переполнение. Тогда, какой смысл его указывать?
Скрыть

Показать

Копировать
  Main.cs  
  • 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