Только что заметил, что контекст unchecked не не работает при работе с BigInteger, например:
unchecked
{
// no exception, long1 assigned to -1 as expected
var long1 = (long)ulong.Parse(ulong.MaxValue.ToString());
}
unchecked
{
var bigInt = BigInteger.Parse(ulong.MaxValue.ToString());
// throws overflow exception
var long2 = (long)bigInt;
}
Любая идея, почему это так? Есть ли что-то особенное в том, как большие целые числа преобразуются в другие примитивные целочисленные типы?
Спасибо,