foreach文による繰り返し処理 - C#

C#のforeach文を使ってループ処理をします。

書式

foreach (変数名 in 対象配列またはコレクション)
{
  ...(処理)
}

または、
foreach (型名 変数名 in 対象配列またはコレクション)
{
  ...(処理)
}

「対象配列またはコレクション」には下記のいずれかを指定できます。
  • 配列
  • オブジェクト コレクション
  • IEnumerableインターフェイスを持つクラス
「変数名」の変数にループ対象変数の要素が順番に代入され、各要素に対してforeachブロック内の処理が実行されます。

記述例

  foreach (string s in stringList) {
    if (s == "OK") OutputOKMessage();
  }

プログラム例

UI

下図のUIを作成します。Windowsフォームにボタンを1つ、複数行のテキストボックスを配置します。

コード

下記のコードを記述します。button1のClickイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ForEachLoopDemo
{
  public partial class FormSimpleForEach : Form
  {
    public FormSimpleForEach()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      int[] a = new int[5];
      a[0] = 24;
      a[1] = 33;
      a[2] = 12;
      a[3] = 8;
      a[4] = 25;

      foreach (int x in a) {
        textBox1.Text += x.ToString() + " / ";
      }

    }
  }
}

解説

下記コードで配列に値を代入します。
      int[] a = new int[5];
      a[0] = 24;
      a[1] = 33;
      a[2] = 12;
      a[3] = 8;
      a[4] = 25;

foreach文でループを実行します。配列aの要素に対して1回ずつループを実行します。ループ内では配列aの値は 変数xに代入されます。1回目のループでは、a[0]の値でループが実行され、変数xの値はa[0]の値である24となります。
      foreach (int x in a) {
        textBox1.Text += x.ToString() + " / ";
      }

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[button1]をクリックします。foreachループが実行され、テキストボックスに配列aの値が "/" で区切られて表示されます。

参考情報

  • IEnumerator<T>インターフェイスを実行しforeachに対応したクラスを作成する方法はこちら
  • IEnumeratorインターフェイスを実行しforeachに対応したクラスを作成する方法はこちら
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2023-12-17
作成日: 2011-02-05
iPentec all rights reserverd.