我想填写2D列表,但从第三个位置开始[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
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");
答案 0 :(得分: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列表的想法看起来有点“同义”。在实际应用中,由于笨拙的寻址,它可能不是最好的数据结构。