我有一个可能包含很多文件的文件夹,我想知道字符串数组可以容纳的最大大小,我的意思是该数组有多少个文件名:
string[] files=Directory.GetFiles(@"c:\Dir\");
可以容纳吗?
请注意,我要问的是 string 数组,而不是其他。
答案 0 :(得分:1)
默认情况下,阵列的最大大小为2 GB。。 在 在64位环境中,您可以通过设置 gcAllowVeryLargeObjects 配置元素的enabled属性 在运行时环境中为true。 但是,阵列仍将是 限制为总共40亿个元素,并且最大索引为 任何给定的维数为0X7FEFFFFF(对于字节数组,为0X7FFFFFC7, 单字节结构数组)。
Ňuf的有用评论
但应注意,字符串本身不计入 2GB的大小限制,因为该数组仅包含对它们的引用 字符串。因此,字符串数组中的最大元素数约为。 在32位处理中为500M,在64位处理中为2G。也是这个限制 适用于.NET CLR,其他实现可能有不同的限制 (例如64位元的Mono支援更大的阵列 –enable-big-arrays选项)