如何初始化嵌套列表容量?

时间:2015-02-18 01:09:09

标签: c# list

我想在C#中列出一个列表,外部列表的容量必须为5,每个内容的容量为100.如何初始化它?

此代码无法编译:

List<List<int>> outer = new List<List<int>>(5);
for (int i = 0; i < 5; i++)
{
    outer[i].Add(new List<int>(100));
}

编辑:我不希望列表在运行时改变大小,导致内存分配破坏性能,这是针对手机游戏

1 个答案:

答案 0 :(得分:4)

您的代码有一个小错字。

List<List<int>> outer = new List<List<int>>(5);
for (int i = 0; i < 5; i++)
{
      // vv here //
    outer[i].Add(new List<int>(100));
}

您正在尝试将列表添加到自身,当然,这不起作用。如果你放弃[i],那应该可以解决你的问题。

List<List<int>> outer = new List<List<int>>(5);
for (int i = 0; i < 5; i++)
{
    outer.Add(new List<int>(100));
}

那就是说,如果你没有严格要求设置外部容量,我建议用LINQ做这个。

List<List<int>> outer = Enumerable.Range(0, 5).Select(c => new List<int>(100)).ToList();

如果你确实需要容量,那么数组可能更适合外部集合。