1. ホーム
  2. c#

[解決済み] ネストされたForeachステートメントによる多次元配列の反復処理

2023-04-14 06:05:42

質問

これはとても簡単な質問だと思うのですが、まだ理解できていません。もし私がこのような2次元の配列を持っていたら

int[,] array = new int[2,3] { {1, 2, 3}, {4, 5, 6} };

配列の各次元を反復処理するために、ネストされた foreach ステートメントで各次元を反復処理する最良の方法は何ですか?

どのように解決するには?

配列の各項目を、あたかもフラット化された配列のように反復処理したい場合は、そうすればよいでしょう。

foreach (int i in array) {
    Console.Write(i);
}

と表示されます。

123456

xとyのインデックスも分かるようにしたい場合は、そうする必要があります。

for (int x = 0; x < array.GetLength(0); x += 1) {
    for (int y = 0; y < array.GetLength(1); y += 1) {
        Console.Write(array[x, y]);
    }
}

代わりにギザギザ配列(配列の配列)を使用することもできます。

int[][] array = new int[2][] { new int[3] {1, 2, 3}, new int[3] {4, 5, 6} };
foreach (int[] subArray in array) {
    foreach (int i in subArray) {
        Console.Write(i);
    }
}

または

int[][] array = new int[2][] { new int[3] {1, 2, 3}, new int[3] {4, 5, 6} };
for (int j = 0; j < array.Length; j += 1) {
    for (int k = 0; k < array[j].Length; k += 1) {
        Console.Write(array[j][k]);
    }
}