どうもひよこちゃんたちは、配列あたりから脳が追いつかなくなるっぽいですなー
(説明:お仕事で初心者の方にC#などを一から教えています。)

ということで、千本ノックじゃー

まずは、1次元、2次元の基本的な配列の形に慣れましょうということで、

Length, GetLength, Rank の値を予想してください。
できれば、配列の形を図にかくといいですな。
ジャグ配列も追加しときました。配列の配列になってる様子がわかるでしょうか?

ドリル形式にしましたので、結果を書き込んでお楽しみください。

// 以下の出力結果を予測してください。

//
// 1
次元

int[] a = {1};

int[] b = {1,2};

int[] c = {1,2,3,4,5,6,7,8,9,10};

 

Console.WriteLine(" a.Length={0:d2},  a.GetLength(0)={1:d2},  a.Rank={2}", a.Length, a.GetLength(0), a.Rank);

Console.WriteLine(" b.Length={0:d2},  b.GetLength(0)={1:d2},  b.Rank={2}", b.Length, b.GetLength(0), b.Rank);

Console.WriteLine(" c.Length={0:d2},  c.GetLength(0)={1:d2},  c.Rank={2}", c.Length, c.GetLength(0), c.Rank);

 

// 2次元

int[,]  aa = {{1}};

int[,]  bb = {{1},{2}};

int[,]  cc = {{1,2},{2,2}};

int[,]  dd = {{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}};

int[,]  ee = {{1,11},{2,22},{3,33},{4,44},{5,55},{6,66},{7,77},{8,88},{9,99}};

 

Console.WriteLine("aa.Length={0:d2}, aa.GetLength(0)={1:d2}, aa.GetLength(1)={2:d2}, aa.Rank={3}",
            aa.Length, aa.GetLength(0), aa.GetLength(1), aa.Rank);
Console.WriteLine("bb.Length={0:d2}, bb.GetLength(0)={1:d2}, bb.GetLength(1)={2:d2}, bb.Rank={3}",
            bb.Length, bb.GetLength(0), bb.GetLength(1), bb.Rank);
Console.WriteLine("cc.Length={0:d2}, cc.GetLength(0)={1:d2}, cc.GetLength(1)={2:d2}, cc.Rank={3}",
            cc.Length, cc.GetLength(0), cc.GetLength(1), cc.Rank);
Console.WriteLine("dd.Length={0:d2}, dd.GetLength(0)={1:d2}, dd.GetLength(1)={2:d2}, dd.Rank={3}",
            dd.Length, dd.GetLength(0), dd.GetLength(1), dd.Rank);
Console.WriteLine("ee.Length={0:d2}, ee.GetLength(0)={1:d2}, ee.GetLength(1)={2:d2}, ee.Rank={3}",
            ee.Length, ee.GetLength(0), ee.GetLength(1), ee.Rank);

 

 

// 実行結果

a.Length=____,  a.GetLength(0)= ____,  a.Rank=____

 b.Length=____,  b.GetLength(0)= ____,  b.Rank=____

 c.Length=____,  c.GetLength(0)= ____,  c.Rank=____

aa.Length=____, aa.GetLength(0)= ____, aa.GetLength(1)=____, aa.Rank=____

bb.Length=____, bb.GetLength(0)= ____, bb.GetLength(1)=____, bb.Rank=____

cc.Length=____, cc.GetLength(0)= ____, cc.GetLength(1)=____, cc.Rank=____

dd.Length=____, dd.GetLength(0)= ____, dd.GetLength(1)=____, dd.Rank=____

ee.Length=____, ee.GetLength(0)= ____, ee.GetLength(1)=____, ee.Rank=____


 

// 2次元 ジャグ配列

int[][] aA = new int[][] { new int[] {1}};

int[][] bB = new int[][] { new int[] {1}, new int[] {2}};

int[][] cC = new int[][] { new int[] {1,2}, new int[] {3,4}};

int[][] dD = new int[][] { new int[] {1,2,3,4,5,6,7,8,9},

                                                   new int[] {1,2,3,4,5,6,7,8,9}};

int[][] eE = new int[][] {  new int[] {1,11},

                                                        new int[] {2,22},

                                                        new int[] {3,33},

                                                        new int[] {4,44},

                                                        new int[] {5,55},

                                                        new int[] {6,66},

                                                        new int[] {7,77},

                                                        new int[] {8,88},

                                                        new int[] {9,99}};

Console.WriteLine("aA.Length={0:d2}, aA.GetLength(0)={1:d2}, aA.Rank={2}",

                                        aA.Length, aA.GetLength(0), aA.Rank);

Console.WriteLine("bB.Length={0:d2}, bB.GetLength(0)={1:d2}, bB.Rank={2}",

                                        bB.Length, bB.GetLength(0), bB.Rank);

Console.WriteLine("cC.Length={0:d2}, cC.GetLength(0)={1:d2}, cC.Rank={2}",

                                        cC.Length, cC.GetLength(0), cC.Rank);

Console.WriteLine("dD.Length={0:d2}, dD.GetLength(0)={1:d2}, dD.Rank={2}",

                                        dD.Length, dD.GetLength(0), dD.Rank);

Console.WriteLine("dD[0].Length={0:d2}, dD[0].GetLength(0)={1:d2}, dD[0].Rank={2}",

                                        dD[0].Length, dD[0].GetLength(0), dD[0].Rank);

Console.WriteLine("eE.Length={0:d2}, eE.GetLength(0)={1:d2}, eE.Rank={2}",

                                        eE.Length, eE.GetLength(0), eE.Rank);

Console.WriteLine("eE[0].Length={0:d2}, eE[0].GetLength(0)={1:d2}, eE[0].Rank={2}",

                                        eE[0].Length, eE[0].GetLength(0), eE[0].Rank);

 

// ついでに、ジャグ配列も追加

// 実行結果

aA.Length=____, aA.GetLength(0)=____, aA.Rank=____
bB.Length=____, bB.GetLength(0)=____, bB.Rank=____
cC.Length=____, cC.GetLength(0)=____, cC.Rank=____
dD.Length=____, dD.GetLength(0)=____, dD.Rank=____
dD[0].Length=____, dD[0].GetLength(0)=____, dD[0].Rank=____
eE.Length=____, eE.GetLength(0)=____, eE.Rank=____
eE[0].Length=____, eE[0].GetLength(0)=____, eE[0].Rank=____