C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のforeachステートメントで配列の要素をループ処理する方法

C#における foreach ループは、配列やコレクション内の各要素に対して、1つの文、あるいは複数の文からなるブロックを繰り返し実行するための構文です。

動作イメージは for ループと似ていますが、大きな違いがあります。for ループではインデックス(添え字)を使って要素へアクセスしますが、foreach は配列やコレクション内の各要素を先頭から順番に自動的に取り出して処理するため、インデックス変数が不要です。その結果、コードがシンプルになり、範囲外アクセスによるバグも防ぎやすくなります。

foreach の基本構文

foreach (データ型 変数名 in 配列またはコレクション)
{
    // 各要素に対する処理
}

サンプル:バブルソート後の要素を foreach で表示する

ここでは、バブルソート(Bubble Sort)で配列の要素を昇順に並べ替えた後、foreach ループを使ってソート済みの要素をすべて表示する例を見てみましょう。

コード例

using System;
namespace BubbleSort {
    class MySort {
        static void Main(string[] args) {
            int[] arr = { 78, 55, 45, 98, 13 };
            int temp;
            for (int j = 0; j <= arr.Length - 2; j++) {
                for (int i = 0; i <= arr.Length - 2; i++) {
                    if (arr[i] > arr[i + 1]) {
                        temp = arr[i + 1];
                        arr[i + 1] = arr[i];
                        arr[i] = temp;
                    }
                }
            }
            Console.WriteLine("Sorted:");
            foreach (int p in arr)
                Console.Write(p + " ");
            Console.Read();
        }
    }
}

実行結果

Sorted:
13 45 55 78 98

解説

上記のコードでは、まず二重の for ループによって隣り合う要素同士を比較し、順序が逆であれば入れ替えることでバブルソートを行っています。ソート完了後、foreach (int p in arr) の部分で、配列 arr の各要素が順番に変数 p に代入され、そのたびに Console.Write() によって値が出力されます。

foreach を使う際のポイント

  • インデックスが不要: 要素を先頭から順に処理する場合、カウンタ変数や境界条件の記述が不要になり、コードが読みやすくなります。
  • 読み取り専用の走査に最適: ループ変数は基本的に読み取り専用として扱われるため、反復中に要素を書き換える用途には向きません。
  • さまざまなコレクションに対応: 配列だけでなく、List<T> や Dictionary など IEnumerable インターフェイスを実装するコレクションにも利用できます。

このように、foreach ステートメントを使えば、配列やコレクションの全要素へのアクセスを簡潔かつ安全に記述できます。特に「全要素を順番に処理したい」場面では、for ループよりも foreach を優先的に検討するとよいでしょう。

  1. C#で配列をループ処理する方法|for・foreach・whileの使い方を解説

    C#で配列の要素を順番に処理(ループ)するには、while、do...while、for、foreachといった各種ループ構文を使用できます。これらのループは開始値と終了条件を持っているため、反復処理の中で柔軟に値の設定やチェックを行うことが可能です。 配列のループに使える4つのループ構文 for文: 初期化・条件式・更新処理を1行にまとめて記述でき、インデックスを使った処理に最適です。 foreach文: 配列やコレクションの全要素を簡潔に走査できます。 while文: 条件式がtrueである限り、繰り返し処理を実行します。 do...while文: 条件判定の前に必ず1回処理を実行します

  2. Pythonのループ処理でcontinueステートメントを使う方法

    Pythonにおけるループ制御ステートメントの一つであるcontinueは、ループブロック内の現在の反復(イテレーション)で残りの処理をスキップし、次の反復処理へ移行するために使用します。continueステートメントは、通常、ループ内の条件分岐(if文)の中に記述されます。条件が満たされた時点でcontinueが実行されると、それ以降に記述された処理は実行されず、ループの先頭に戻って次の繰り返しが開始されます。サンプルコードx=0 while x<10: x=x+1 if x==5: continue print (x=,x)この例では、変数xが5になったときに