Преобразование из BigInteger в Int32 является явным, поэтому просто присвоение переменной / свойства BigInteger
переменной int
не работает:
BigInteger big = ...
int result = big; // compiler error:
// "Cannot implicitly convert type
// 'System.Numerics.BigInteger' to 'int'.
// An explicit conversion exists (are you
// missing a cast?)"
Это работает (хотя может вызвать исключение во время выполнения, если значение слишком велико, чтобы поместиться в переменную int
):
BigInteger big = ...
int result = (int)big; // works
Обратите внимание, что, если значение BigInteger
заключено в object
, его нельзя распаковать и одновременно преобразовать в int
:
BigInteger original = ...;
object obj = original; // box value
int result = (int)obj; // runtime error
// "Specified cast is not valid."
Это работает:
BigInteger original = ...;
object obj = original; // box value
BigInteger big = (BigInteger)obj; // unbox value
int result = (int)big; // works