The conversion from BigInteger to Int32 is explicit, so just assigning a BigInteger variable/property to an int variable doesn't work:
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?)"
This works (although it might throw an exception at runtime if the value is too large to fit in the int variable):
BigInteger big = ...
int result = (int)big; // works
Note that, if the BigInteger value is boxed in an object, you cannot unbox it and convert it to int at the same time:
BigInteger original = ...;
object obj = original; // box value
int result = (int)obj; // runtime error
// "Specified cast is not valid."
This works:
BigInteger original = ...;
object obj = original; // box value
BigInteger big = (BigInteger)obj; // unbox value
int result = (int)big; // works
int?int, so(int)someBigIntegershould work.