0

我想填写一个 2Dlist,但从第三个位置 [2] 开始。这有可能吗?用于理解我的意思的简短代码:

List<List<string>> List2D = new List<List<string>>();

for (int i = 0; i < 5; i++)
{
  List2D[2].Add("i")
}

我收到以下错误: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

编辑:知道如何填写 4D 列表吗?

List<List<List<List<string>>>> List4D = new List<List<List<List<string>>>>();

for (int i = 0; i < List1.Count; i++)
{
    List<List<List<string>>> List3D = new List<List<List<string>>>();
    for (int j = 0; j < List2.Count; j++)
    {
        List<List<string>> List2D = new List<List<string>>();
        for (int k = 0; k < List3.Count; k++)
        {
            List<string> Lijst1D = new List<string>();
            List2D.Add(Lijst1D);
        }
        List3D.Add(List2D);
    }
    List4D.Add(List3D);
}

所以稍后我可以调用:List4D[2][3][0].Add("test");

4

1 回答 1

1

由于您刚刚创建List2D并没有添加任何嵌套列表,因此您无法访问它的第三个元素(那里什么都没有)。

您必须先添加一些项目:

List<List<string>> List2D = new List<List<string>>();
List2D.Add(new List<string>());
List2D.Add(new List<string>());
List2D.Add(new List<string>());

for (int i=0; i<5; i++)
{
  List2D[2].Add("i")
}

更新

好吧,填写该列表的核心思想保持不变:如果您想访问List4D[2][3][0]- 首先您需要填写“路径”中的所有列表。

你可以这样做:

List<List<List<List<string>>>> List4D = new List<List<List<List<string>>>>();

int i1 = 2, i2 = 3, i3 = 0;

for (int i = 0; i <= Math.Max(i1, 1); i++)
    List4D.Add(new List<List<List<string>>>());

for (int i = 0; i <= Math.Max(i2, 1); i++)
    List4D[i1].Add(new List<List<string>>());

for (int i = 0; i <= Math.Max(i3, 1); i++)
    List4D[i1][i2].Add(new List<string>());

List4D[i1][i2][i3].Add("test");

坦率地说,4D 列表的想法看起来有点“合成”。在实际应用中,由于笨拙的寻址,它可能不是最好的数据结构。

于 2015-06-18T08:12:45.453 回答