为什么下面的代码抛出异常“算术操作导致溢出。”?
UInt64[] arr=new UInt64[UInt64.MaxValue];发布于 2010-03-19 13:19:52
我猜是因为请求分配全部8 * UInt64.MaxValue字节,而这种乘法显然会溢出64位寄存器。
发布于 2010-03-19 14:28:41
因为索引器只使用Int32值。你能做到的
UInt64[] arr=new UInt64[Int32.MaxValue];但这是极限。
编辑:从技术上讲,您可以索引一个数组,其值结构理论上可以高于Int32.MaxValue (例如,您可以用一个长值或uint索引数组),但是,当值超过Int32.MaxValue时,您将遇到该运行时错误。
发布于 2010-03-19 13:30:57
因为
( a)在.NET中,所有对象都被限制在2GB以内
( b)你没有64 PetaBytes的内存可花
https://stackoverflow.com/questions/2477545
复制相似问题