为什么在init数组时会出现System.OverflowException

时间:2018-06-15 19:08:52

标签: c# exception

byte[] buffer2 = new byte[4294743227]; // string with System.OverflowException 

号码4294743227是uint。

为什么我会例外?

1 个答案:

答案 0 :(得分:5)

根据this question,数组的最大大小为System.Int32.MaxValue,即2,147,483,647。

另请参阅System.Array上的文档:

  

默认情况下,Array的最大大小为2千兆字节(GB)。在一个   在64位环境中,您可以通过设置来避免大小限制   gcAllowVeryLargeObjects配置元素的enabled属性   在运行时环境中为true。但是,阵列仍然是   限制为总共40亿个元素,并且最大指数为   任何给定维度的0X7FEFFFFF(0X7FFFFFC7用于字节数组和   单字节结构数组。)