C#锯齿状数组

时间:2016-02-11 13:26:04

标签: c# jagged-arrays

<ImageView
android:width="match_parent"
android:height="50dp"
android:scaleType="fitXY"/>

这是程序,输出是

  

0

     

0

     

1

     

1

但我对jagges数组的初始化有点困惑,我评论过。如果我错了,请告诉我锯齿状二维阵列的初始化并纠正我。

1 个答案:

答案 0 :(得分:1)

不确定你在哪里感到困惑,但我想混淆的只是jagged arraymultidimensional array的混合。即a [] []是锯齿状数组,第二维可以具有任何(或没有)长度。您必须在单独的外观中初始化每个维度虽然多维数组对于每个维度具有相同的长度,并且这就是您可以预初始化多维数组的原因。像[2,5]一样。

下面的示例将详细介绍每种数组的初始化以及如何编写更多动态代码。

//jagged array sample of initialization
int[][] jagged = new int[3][];

for (int i = 0; i < jagged.Length; i++)
    jagged[i] = new int[i + 4]; //each element of jagged array can have different length

//multidimensional array sample of initialization
int[,] multiD = new int[3, 4]; //that's it. 
//multiD.GetLength(0) is 3 and  multiD.GetLength(1) is 4

//Your example.

int[][,] a = new int[3][,];
a[0] = new int[2, 2];
a[1] = new int[3, 4];

int interationOrder = 0;

for (int jag = 0; jag < a.Length; jag++)
{
    //considering rank of multidimentional array is always 2 (Rank of [,] = 2, Rank of [,,] = 3)
    if (a[jag] == null)
        continue;

    for (int i = 0; i < a[jag].GetLength(0); i++)
    {
        for (int j = 0; j < a[jag].GetLength(1); j++)
        {
            a[jag][i, j] = interationOrder++;//no confusion :) this is corret.
        }
    }
}