2017-09-13 108 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