2012-07-03 35 views
0

因为显示内存不足异常,我应该如何创建一个可以容纳此范围(在代码中)的列表?内存不足异常C#列表

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var l1 = Enumerable.Range(999900000, 1000000000).ToList(); 
      l1.ForEach(f => Console.WriteLine(f)); 
     } 
    } 
} 
+0

你运行32位或64位版本? – weismat

+0

可能的重复[为什么我在C#应用程序中出现内存不足异常?](http://stackoverflow.com/questions/597499/why-am-i-getting-an-out-of-memory-exception -in-my-c-sharp-application) –

+0

32位版本 –

回答

7

没有转换为List<T>,只是列举:

var l1 = Enumerable.Range(999900000, 1000000000); 
foreach(var f in l1) 
    Console.WriteLine(f); 
+3

究竟是什么样的懒惰评估:-) –

2

不收你,特别是如果你已经知道它的内容列表中需要的所有数据,但使用枚举,以这种方式减少你的应用程序的内存占用量。

例如:

IEnumerable<int> GetNextInt() 
    { 
     for(int i=999900000; i< 1000000000; i++) 
     { 
      yield return i; 
     } 
    } 

和循环使用后,这个喜欢

foreach(var integer in GetNextInt()) 
{ 
    //do something.. 
}