2017-09-13 94 views
1

我们可以用这种方式在C#中定义一个二维数组的数组吗? 或获取类似数据集的其他方法?二维数组C#的数组?

double[][,] testArray = new double[a][b,c]; 

注意:所有三个指数 - A,B和C都在运行时获得的。

感谢

+1

您可以一次只声明一个数组维度。 'new double [a] [,]'是有效的,而你的声明不是。然后,您可以遍历外部维度来填充内部数组。 – Amy

回答

8

你可以做到这一点,但你必须初始化单独每个二维数组:

double[][,] testArray = new double[a][,]; 
for(int i = 0; i < a; i++) 
{ 
    testArray[i] = new double[b, c]; 
} 

另一种方式是只需要声明一个三维数组:

double[,,] testArray3D = new double[a, b, c]; 

也就是说,如果您在开始时想要的每个2D阵列都具有相同的尺寸,则可以进行该更改

4

当然。

int[][,] arrayOf2DArrays = 
{ 
    new int[,] {{1, 2, 3}, {4, 5, 6}}, 
    new int[,] {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}, 
    new int[,] {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15}} 
}; 

这本质上是包含三个二维阵列,每个不同尺寸的一维锯齿形阵列。

的元素可以以下面的方式来访问:

var element = arrayOf2DArrays[0][0, 0]; // etc 
Console.WriteLine(element); 

..和arrayOf2DArrays.Length将,在上面的例子中,返回3,如arrayOf2DArrays包含三个二维阵列。

Jagged Arrays (C# Programming Guide) - MSDN