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

unn*_*med -1 c# exception

byte[] buffer2 = new byte[4294743227]; // string with System.OverflowException 
Run Code Online (Sandbox Code Playgroud)

号码4294743227是uint.

为什么我会例外?

Bar*_*chs 5

根据这个问题,数组的最大大小System.Int32.MaxValue是2,147,483,647.

另见以下文档System.Array:

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