为什么我不能在我的 4D 列表中引用一个随机索引,而我知道它存在?
Why cant I refer to a random index in my 4D list, while I know it exists?
我有一个 4D 列表,我想要只显示 [k][3][j][z] 的位置,但这不起作用。我检查了所有计数,它们都是 5+,所以 3[4] 应该有效...
for (int k = 0; k < lijst4D.Count; k++)
{
for (int i = 0; i < lijst4D[k].Count; i++) // This count is higher than 4!
{
for (int j = 0; j < lijst4D[k][i].Count; j++)
{
for (int z = 0; z < lijst4D[k][i][j].Count; z++)
{
Console.WriteLine(lijst4D[k][i][j][z]); // This is working
Console.WriteLine(lijst4D[k][3][j][z]); // This is NOT working
}
}
}
}
这也不起作用:
Console.WriteLine(lijst4D[0][0][0][0]);
Console.WriteLine(lijst4D[1][1][1][1]);
为什么这不起作用?谁能给我解释一下?我错过了什么吗?
我收到此错误:Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
编辑:这确实有效..为什么?
for (int k = 0; k < lijst4D.Count; k++)
{
for (int i = 3; i < 4; i++) // Will do this loop once
{
for (int j = 0; j < lijst4D[k][i].Count; j++)
{
for (int z = 0; z < lijst4D[k][i][j].Count; z++)
{
Console.WriteLine(lijst4D[k][i][j][z]);
}
}
}
}
EDIT2:我如何填写列表:
for (int g = 0; g < List.Count; g++)
{
List<List<List<string>>> Lijst3D = new List<List<List<string>>>();
for (int j = 0; j < Alist.Count; j++)
{
List<List<string>> Lijst2D = new List<List<string>>();
for (int k = 0; k < Anotherlist.Count; k++)
{
List<string> Lijst1D = new List<string>();
Lijst2D.Add(Lijst1D);
}
Lijst3D.Add(Lijst2D);
}
Lijst4D.Add(Lijst3D);
}
提前致谢
您使用的是 4 维 (A[a,b,c,d]) 数组还是 4D 锯齿状数组(每个元素指向另一个数组的数组等等)?
似乎您想使用 4D 数组(像 A[i,j] 一样访问它)但是您的代码正在访问锯齿状数组(像 A[i][j])
编辑:
我会把列表分解成一个合适的数据结构,我可以正确地可视化它……可能是这样的……
您可以在每个 class 中添加一个方法来依次填充其列表容器...
void Main()
{
var lstOuter= new List<A>();
}
// Define other methods and classes here
class A
{
public A ()
{
ListB=new List<string>();
}
public string val{get; set;}
public List<string> ListB { get; set; }
}
class B
{
public B ()
{
ListC=new List<string>();
}
public string val{get; set;}
public List<string> ListC { get; set; }
}
class C
{
public C ()
{
ListD=new List<string>();
}
public string val{get; set;}
public List<string> ListD { get; set; }
}
根据您填写 4D 列表的代码:
List<string> Lijst1D = new List<string>();
Lijst2D.Add(Lijst1D);
此处您正在创建新的 List<string>
并将其添加到父二维列表。
但是 Lijst1D
本身不包含任何元素(您没有向其中添加任何内容),因此 Lijst4D[0]
将抛出 IndexOutOfRangeException
以及 Lijst4D[0][0][0][0]
抛出。
我有一个 4D 列表,我想要只显示 [k][3][j][z] 的位置,但这不起作用。我检查了所有计数,它们都是 5+,所以 3[4] 应该有效...
for (int k = 0; k < lijst4D.Count; k++)
{
for (int i = 0; i < lijst4D[k].Count; i++) // This count is higher than 4!
{
for (int j = 0; j < lijst4D[k][i].Count; j++)
{
for (int z = 0; z < lijst4D[k][i][j].Count; z++)
{
Console.WriteLine(lijst4D[k][i][j][z]); // This is working
Console.WriteLine(lijst4D[k][3][j][z]); // This is NOT working
}
}
}
}
这也不起作用:
Console.WriteLine(lijst4D[0][0][0][0]);
Console.WriteLine(lijst4D[1][1][1][1]);
为什么这不起作用?谁能给我解释一下?我错过了什么吗?
我收到此错误:Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
编辑:这确实有效..为什么?
for (int k = 0; k < lijst4D.Count; k++)
{
for (int i = 3; i < 4; i++) // Will do this loop once
{
for (int j = 0; j < lijst4D[k][i].Count; j++)
{
for (int z = 0; z < lijst4D[k][i][j].Count; z++)
{
Console.WriteLine(lijst4D[k][i][j][z]);
}
}
}
}
EDIT2:我如何填写列表:
for (int g = 0; g < List.Count; g++)
{
List<List<List<string>>> Lijst3D = new List<List<List<string>>>();
for (int j = 0; j < Alist.Count; j++)
{
List<List<string>> Lijst2D = new List<List<string>>();
for (int k = 0; k < Anotherlist.Count; k++)
{
List<string> Lijst1D = new List<string>();
Lijst2D.Add(Lijst1D);
}
Lijst3D.Add(Lijst2D);
}
Lijst4D.Add(Lijst3D);
}
提前致谢
您使用的是 4 维 (A[a,b,c,d]) 数组还是 4D 锯齿状数组(每个元素指向另一个数组的数组等等)? 似乎您想使用 4D 数组(像 A[i,j] 一样访问它)但是您的代码正在访问锯齿状数组(像 A[i][j])
编辑: 我会把列表分解成一个合适的数据结构,我可以正确地可视化它……可能是这样的…… 您可以在每个 class 中添加一个方法来依次填充其列表容器...
void Main()
{
var lstOuter= new List<A>();
}
// Define other methods and classes here
class A
{
public A ()
{
ListB=new List<string>();
}
public string val{get; set;}
public List<string> ListB { get; set; }
}
class B
{
public B ()
{
ListC=new List<string>();
}
public string val{get; set;}
public List<string> ListC { get; set; }
}
class C
{
public C ()
{
ListD=new List<string>();
}
public string val{get; set;}
public List<string> ListD { get; set; }
}
根据您填写 4D 列表的代码:
List<string> Lijst1D = new List<string>();
Lijst2D.Add(Lijst1D);
此处您正在创建新的 List<string>
并将其添加到父二维列表。
但是 Lijst1D
本身不包含任何元素(您没有向其中添加任何内容),因此 Lijst4D[0]
将抛出 IndexOutOfRangeException
以及 Lijst4D[0][0][0][0]
抛出。