わんくま同盟 東京勉強会 #8 の ぢゃま いかを さんのセッションで
僕が投げた質問:
「int [M,N] みたいな多次元配列を foreach したらどないなんの?」
わざわざ訊くほどのことでもなかったわけで、復習がてらのお試しコード
class Program {
public static void Main() {
int[,,] arr = new int[3,4,5];
for ( int x = 0; x < 3; ++x ) {
for ( int y = 0; y < 4; ++y ) {
for ( int z = 0; z < 5; ++z ) {
arr[x,y,z] = 9000+ x*100+y*10+z;
}
}
}
foreach ( int item in arr ) {
System.Console.Write("{0} ", item);
}
}
}
ふーん、[0,0,0] [0,0,1] ... [0,0,4], [0,1,0] [0,1,1] ...
うしろの添字から順にincrementされた順で列挙されます。
# Lengthプロパティは要素の総数が返ってきますねー
ジャグ配列: int[M][N] arr を foreach する場合、
foreach ( int item in arr ) ってやるとコンパイルエラーです。
foreach ( int[] row in arr ) が正解。
[追記] ついでにジャグ配列の列挙順を調べゆ。
class Program {
static void Main() {
int[][] arr;
arr = new int[2][];
arr[0] = new int[3];
arr[1] = new int[4];
System.Console.WriteLine(arr.Length);
foreach (int[] row in arr) {
System.Console.WriteLine(row.Length);
}
}
}
2, 3, 4 の順でした。左から右/上から下ですねー