As described in MSDN BigInteger is :
An immutable type that represents an arbitrarily large integer whose value in theory has no upper or lower bounds.
As I can see BigInteger is a ValueType
, as much as I know, a ValueType must have a maximum size of 16 bytes.
MSDN goes further saying :
an OutOfMemoryException can be thrown for any operation that causes a BigInteger value to grow too large.
and more :
Although this process is transparent to the caller, it does incur a performance penalty. In some cases, especially when repeated operations are performed in a loop on very large BigInteger values
How could it store such big values, as big as double.MaxValue + double.MaxValue
?
I was told that it has ReferenceType
obejects inside it, but all I can find here in its definition in VisualStudio is ValueTypes.
What's its real limit ? And even if doesn't have one, how can it "as a value type" manage to store all that amount of data ?