C# foreachの使い方

この記事のポイント

C#プログラミングを始めたばかりの方でも、foreach文を理解すれば配列やリストの操作が格段に楽になります。

  • 配列やリストの全要素に順番にアクセスする基本的な繰り返し処理
  • forループよりも簡潔で読みやすいコードが書ける便利な構文
  • 実際のプログラム開発で頻繁に使用される重要なプログラミング技法

これらのポイントを押さえることで、より効率的なプログラムが作成できるようになります。

目次

foreachとは?

C#のforeach文は、配列やリストなどのコレクション(複数の要素をまとめて管理するデータ構造)内のすべての要素に対して、順番に同じ処理を繰り返し実行するための構文です。

従来のforループと比較して、インデックス番号を管理する必要がなく、より直感的で読みやすいコードが書けます。コレクション内の要素数が事前にわからない場合でも安全に処理でき、要素の取得ミスによるエラーを防げる利点があります。初心者でも理解しやすく、実際の開発現場でも頻繁に使用される重要な制御構文のひとつです。

【関連】
C#をもっと詳しく学ぶならpaizaラーニング

基本構文

C#のforeach文の基本的な書き方は「foreach (データ型 変数名 in コレクション)」という形式です。この構文により、コレクション内の各要素が変数に順番に代入され、ブロック内の処理が繰り返し実行されます。

using System; class Program { static void Main() { // 文字列の配列を定義し、動物の名前を格納 string[] animals = { "イヌ", "ネコ", "ウサギ" }; // 配列の各要素を順番に取り出して表示 foreach (string animal in animals) { Console.WriteLine(animal); } } }

出力結果

イヌ
ネコ
ウサギ

数値の配列でも同様に処理できます。

using System; class Program { static void Main() { int[] numbers = { 1, 2, 3, 4, 5 }; foreach (int number in numbers) { Console.WriteLine($"数値: {number}"); } } }

出力結果

数値: 1
数値: 2
数値: 3
数値: 4
数値: 5

実用例

ここからは、実際のプログラム開発でよく使用されるforeach文の実用的なサンプルコードを紹介します。配列やリストの操作から、より高度なデータ処理まで、段階的に学習できる構成です。

各コード例では、動物の名前や関連データを使用して、親しみやすい内容で解説していきます。これらのサンプルを通じて、foreach文の柔軟性と実用性を理解できるでしょう。実際にコードを動かしながら、foreach文の動作を確認してみてください。

配列の要素を順番に表示する方法

最も基本的なforeach文の使用例として、文字列配列に格納された動物の名前を順番に表示する方法を紹介します。この例では、配列内のすべての要素に対して同じ処理を適用する基本パターンを学習できます。

using System; public class Program { public static void Main(string[] args) { // 文字列配列の宣言と初期化 string[] pets = { "ハムスター", "インコ", "カメ", "キンギョ" }; // foreach文を使って配列の要素を順番に処理し、出力 foreach (string pet in pets) { Console.WriteLine($"ペット: {pet}"); } } }

出力結果

ペット: ハムスター
ペット: インコ
ペット: カメ
ペット: キンギョ

リストの数値計算処理

List<int>型のコレクションに格納された動物の年齢データを使用して、合計値を計算するサンプルコードです。foreach文を使用した数値計算の基本的な処理方法を学習できます。

using System; using System.Collections.Generic; // List<int> を使用するために必要 public class Program { public static void Main(string[] args) { // List<int>型のコレクションの宣言と初期化(動物の年齢データ) List<int> animalAges = new List<int> { 3,7,2,5,1 }; int totalAge = 0; // 合計を格納するための変数を初期化 // foreach文を使ってコレクションの要素を順番に取り出し、合計に加算 foreach (int age in animalAges) { totalAge += age; // totalAge = totalAge + age;の短縮形 } Console.WriteLine($"動物たちの年齢合計: {totalAge}歳"); } }

出力結果

動物たちの年齢合計: 18歳

文字列配列の文字数チェック

文字列配列内の各動物名の文字数を調べて表示するサンプルコードです。文字列のプロパティにアクセスして、条件判定を行う処理方法を学習できます。

using System; public class Program { public static void Main(string[] args) { // 文字列配列の宣言と初期化 string[] wildAnimals = { "ライオン", "ゾウ", "キリン", "サル" }; foreach (string animal in wildAnimals) { Console.WriteLine($"{animal}: {animal.Length}文字"); } } }

出力結果

ライオン: 4文字
ゾウ: 2文字
キリン: 3文字
サル: 2文字

オブジェクトのプロパティ表示

カスタムクラスのオブジェクトを格納したリストに対してforeach文を使用し、各オブジェクトのプロパティにアクセスして表示するサンプルです。オブジェクト指向プログラミングの基本的な概念も学習できます。

using System; public class Program { public static void Main(string[] args) { // NameとTypeを持つオブジェクトの配列を宣言・初期化 var animals = new[] { new { Name = "タヌキ", Type = "野生動物" }, new { Name = "ウマ", Type = "家畜" } }; foreach (var animal in animals) { // 各オブジェクトのプロパティにアクセスして出力 Console.WriteLine($"{animal.Name} ({animal.Type})"); } } }

出力結果

タヌキ (野生動物)
ウマ (家畜)

条件に合致する要素の抽出

foreach文内でif文を使用して、特定の条件に合致する要素のみを処理するサンプルコードです。条件分岐と繰り返し処理を組み合わせた実用的なプログラミング技法を学習できます。

using System; public class Program { public static void Main(string[] args) { // 文字列配列の宣言と初期化 string[] animals = { "イヌ", "ネコ", "ウサギ", "ハムスター", "フェレット" }; foreach (string animal in animals) { // 現在の要素(animal)の文字数が2文字以下かどうかを判定 if (animal.Length <= 2) { Console.WriteLine($"短い名前: {animal}"); } } } }

出力結果

短い名前: イヌ
短い名前: ネコ

ネストした配列の処理

二次元配列やネストした配列に対してforeach文を使用するサンプルコードです。複雑なデータ構造に対する処理方法を学習し、より高度なプログラミング技法を身につけることができます。

using System; public class Program { public static void Main(string[] args) { // 文字列の多次元配列(配列の配列)を宣言・初期化 string[][] animalGroups = { new string[] {"イヌ", "ネコ"}, new string[] {"ウシ", "ウマ"} }; foreach (string[] group in animalGroups) { foreach (string animal in group) { Console.WriteLine(animal); } } } }

出力結果

イヌ
ネコ
ウシ
ウマ

辞書型データの操作

Dictionary<string, int>型のデータに対してforeach文を使用し、キーと値のペアを処理するサンプルです。辞書型データ構造の基本的な操作方法と、KeyValuePairの使用方法を学習できます。

using System; using System.Collections.Generic; // Dictionary<Key, Value> を使用するために必要 public class Program { public static void Main(string[] args) { var animalCounts = new Dictionary<string, int> { {"イヌ", 3}, {"ネコ", 5}, {"ウサギ", 2} }; foreach (var pair in animalCounts) { // 辞書に登録された動物名と匹数を順に出力 Console.WriteLine($"{pair.Key}: {pair.Value}匹"); } } }

出力結果

イヌ: 3匹
ネコ: 5匹
ウサギ: 2匹

LINQと組み合わせた高度な処理

LINQ(Language Integrated Query)とforeach文を組み合わせて、より高度なデータ処理を行うサンプルコードです。関数型プログラミングの要素を取り入れた現代的なC#プログラミング手法を学習できます。

using System; using System.Linq; // LINQのWhereメソッドを使用するために必要 public class Program { public static void Main(string[] args) { var animals = new[] { "イヌ", "ネコ", "ウサギ", "ハムスター" }; // LINQのWhereを使用し、文字数が2を超える要素を抽出 var longNames = animals.Where(name => name.Length > 2); foreach (string animal in longNames) { Console.WriteLine($"長い名前: {animal}"); } } }

出力結果

長い名前: ウサギ
長い名前: ハムスター

まとめ

C#のforeach文は、配列やリストなどのコレクション操作において欠かせない重要な制御構文です。従来のforループと比較して、よりシンプルで読みやすいコードが書けるため、プログラミング初心者から上級者まで幅広く活用されています。この記事で紹介したサンプルコードを参考に、実際のプログラム開発でforeach文を積極的に使用してみてください。

foreachの活躍する場面

  1. 配列やリスト内の全要素に対する一括処理を行う場面
  2. コレクションのサイズが不明な場合の安全な要素アクセス
  3. LINQと組み合わせた高度なデータ処理とフィルタリング

重要なポイント

  1. インデックス管理が不要で境界値エラーを防げる安全性
  2. コードの可読性が高く保守性に優れたプログラム作成
  3. さまざまなデータ型とコレクション型に対応した汎用性

これらの特長を理解し、適切に活用することで、より効率的で品質の高いC#プログラムを開発できます。実践を通じて、foreach文を確かなスキルとして自分のものにしていきましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. C#のリファレンス記事一覧
  4. C# foreachの使い方