内存不足C#列表

时间:2012-07-03 08:16:21

标签: c# list out-of-memory

如何显示可以容纳此范围的列表(在代码中),因为它显示内存不足异常?

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

2 个答案:

答案 0 :(得分:7)

请勿转换为List<T>,只需枚举:

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

答案 1 :(得分:2)

请勿在列表中收集所需的所有数据,尤其是如果您已知道其中的内容,但使用枚举器,以此方式减少应用的内存占用量。

例如:

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

并在循环之后使用此

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