どうもひよこちゃんたちは、配列あたりから脳が追いつかなくなるっぽいですなー
(説明:お仕事で初心者の方に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=____