2012-07-03 65 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.. 
}