C# 二维阵列的锯齿阵列
我试图创建一个1d数组(长度5),其中包含杂志[14,14]的2d数组。 这样我就可以走了(即,1d数组中的每个元素都引用一个具有14x14(=196个弹匣)的2d数组):C# 二维阵列的锯齿阵列,c#,.net,arrays,visual-studio,multidimensional-array,C#,.net,Arrays,Visual Studio,Multidimensional Array,我试图创建一个1d数组(长度5),其中包含杂志[14,14]的2d数组。 这样我就可以走了(即,1d数组中的每个元素都引用一个具有14x14(=196个弹匣)的2d数组): 以这种方式初始化和分配元素的正确语法是什么?我相信这会起作用 myMags[0] = new Magazine[14,14]; myMags[1] = new Magazine[14,14]; myMags[2] = new Magazine[14,14]; myMags[3] = new Magazine[14,14];
以这种方式初始化和分配元素的正确语法是什么?我相信这会起作用
myMags[0] = new Magazine[14,14];
myMags[1] = new Magazine[14,14];
myMags[2] = new Magazine[14,14];
myMags[3] = new Magazine[14,14];
myMags[4] = new Magazine[14,14];
参考这不编译,但是
杂志[][,]myVarName=new[]{new杂志[14,14],…}代码>doesRight,你有一个2d数组,我举了一个3d数组的例子。Hogan,问题是如果你想把一个2d数组传递给一个函数,你不能快速提取它。例如,我假设@toop想要打电话SomeFunction(库[,]数组)
passingarray=myVarName[0]
。通常称为锯齿数组。只要大小保持不变,就应该能够将14×14数组作为参数传递。(您可能需要进行复制而不是赋值。锯齿状数组允许每个元素具有不同的大小--标准数组映射到单个内存区域。为什么您需要或想要一个2D数组的1D数组,而不是真正的3D数组?这是正确的。括号的顺序在C#中有些混乱。请注意,在CLR中,顺序不同,而且更复杂。)逻辑的。例如,使用上面的myMag
,myMags.GetType()。Name
将返回“杂志[,][]”
,而不是“杂志[,]”
。因此typeof(杂志[,]])。Name==“杂志[,]”
。
myMags[0] = new Magazine[14,14];
myMags[1] = new Magazine[14,14];
myMags[2] = new Magazine[14,14];
myMags[3] = new Magazine[14,14];
myMags[4] = new Magazine[14,14];
private Magazine[,,] myVarName = new Magazine[4,14,14];
Magazine[][,] myMags = new Magazine[5][,];
myMags[0] = new Magazine[14, 14];
myMags[1] = new Magazine[14, 14];
myMags[2] = new Magazine[14, 14];
myMags[3] = new Magazine[14, 14];
myMags[4] = new Magazine[14, 14];