unchecked
ключевое слово было объяснено в библиотеке MSDN как:Почему не проверено, не работает ли байт?
непроверенным ключевое слово используется для подавления переполнения проверки для арифметических операций интегрального типа и преобразования. В необработанном контексте , если выражение создает значение, которое находится за пределами диапазона типа назначения, переполнение не помечено.
По определению он хорошо работает на int
типа.
Например:
unchecked
{
int i=2147483647+10;
}
Здесь он подавляет переполнение внутри непроверенной блока (должно быть)
Но когда мы применяем его на байт не работает
byte b1=100,b2=100,b3;
unchecked
{
b3=b1+b2;//error here
}
. Поэтому все, что написано в неконтролируемой среде, должно быть подавлено.
Почему он дает ошибку времени компиляции?
Или я вообще не понимаю ключевое слово unchecked?
'byte' вмещает до 255, так что это не переполнило бы все равно. Какова ваша «ошибка компилятора»? –
не может неявно преобразовывать int в байт –