0

我应该如何制作一个可以容纳这个范围的列表(在代码中),因为它显示内存不足异常?

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

2 回答 2

7

不要转换为List<T>,只需枚举:

var l1 = Enumerable.Range(999900000, 1000000000);
foreach(var f in l1)
    Console.WriteLine(f);
于 2012-07-03T08:19:19.037 回答
2

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

例如:

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

并在循环之后使用它

foreach(var integer in GetNextInt())
{ 
    //do something.. 
}
于 2012-07-03T08:21:18.497 回答