フッターコンテンツにスキップ
.NETヘルプ

C# For Each (開発者向けの仕組み)

このチュートリアルでは、開発者にとっての必須ツールである「C# foreach」ループについて解説します。 foreachループは、コレクションを反復処理するプロセスを簡略化し、各アイテムに対する操作をより簡単に行えるようにします。 foreachの重要性、使用例、およびC#コードでの実装方法について説明します。

foreachループの導入

foreachループは、コレクションを簡素で読みやすい方法で反復処理するための強力なツールです。 コードを簡素化し、インデックスやコレクションアイテムの数を手動で管理する必要がないため、エラーの可能性を減少させます。 可読性と簡潔さにおいて、foreachループは従来のforループよりもよく使用されます。

foreachの使用例には以下が含まれます:

  • コレクション内の値の合計を算出する
  • コレクション内のアイテムを検索する
  • コレクション内の要素を変更する
  • コレクションの各要素に対して操作を行う

コレクションの理解

C#には、1つのオブジェクトにグループ化されたアイテムを格納するために使用されるさまざまなタイプのコレクションがあります。 これには配列、リスト、ディクショナリなどが含まれます。 foreachループは、IEnumerableまたはIEnumerable<T>インターフェイスを実装する任意のコレクションで使用できる便利なツールです。

一般的なコレクションタイプには以下が含まれます:

  • 配列:同じデータ型の要素から成る固定サイズのコレクション。
  • リスト:同じデータ型の要素から成る動的コレクション。
  • ディクショナリ:キーがユニークなキーと値のペアから成るコレクション。

System.Collections.Generic名前空間には、コレクションを操作するためのさまざまな型が含まれています。

C#でのforeach文の実装

コレクションとforeachループの基本を理解したので、構文について確認し、C#での使い方を見てみましょう。

foreachループの構文

foreach (variableType variableName in collection)
{
    // Code to execute for each item
}
foreach (variableType variableName in collection)
{
    // Code to execute for each item
}
For Each variableName As variableType In collection
	' Code to execute for each item
Next variableName
$vbLabelText   $csharpLabel

ここで、variableTypeはコレクション内のアイテムのデータ型を表し、variableNameはループ内の現在のアイテムに付けられる名前(ループ変数)で、collectionは反復処理したいコレクションを指します。

整数のリストがあり、そのリストのすべての要素の合計を求めたいという例を考えましょう。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Create a list of integers
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Initialize a variable to store the sum
        int sum = 0;

        // Iterate through the list using foreach loop
        foreach (int number in numbers)
        {
            sum += number;
        }

        // Print the sum
        Console.WriteLine("The sum of the elements is: " + sum);
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Create a list of integers
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Initialize a variable to store the sum
        int sum = 0;

        // Iterate through the list using foreach loop
        foreach (int number in numbers)
        {
            sum += number;
        }

        // Print the sum
        Console.WriteLine("The sum of the elements is: " + sum);
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		' Create a list of integers
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}

		' Initialize a variable to store the sum
		Dim sum As Integer = 0

		' Iterate through the list using foreach loop
		For Each number As Integer In numbers
			sum += number
		Next number

		' Print the sum
		Console.WriteLine("The sum of the elements is: " & sum)
	End Sub
End Class
$vbLabelText   $csharpLabel

出力

ループが実行されると、以下の出力が得られます。

The sum of the elements is: 15

上記の例では、まずnumbersという整数のリストを作成し、要素の合計を格納するsum変数を初期化します。 それから、foreachループを使用してリストを反復処理し、各要素の値を合計に加えます。 最後に、コンソールに合計を出力します。 この方法は、他のコレクションに対しても同様に印刷や操作を適応できます。

バリエーションとベストプラクティス

foreachループの使い方の基本を理解したので、いくつかのバリエーションとベストプラクティスについて説明しましょう。

読み取り専用の反復foreachループは、コレクションを反復処理しながら変更すると予期しない結果やランタイムエラーが発生する可能性があるため、読み取り専用の反復に最適です。 反復中にコレクションを変更する必要がある場合は、従来のforループを使用するか、必要な変更を加えた新しいコレクションを作成することを検討してください。

varキーワードの使用:コレクション内の要素のデータ型を明示的に指定する代わりに、varキーワードを使用してコンパイラがデータ型を推論できるようにします。 これにより、コードがより簡潔で保守しやすくなります。

例:

foreach (var number in numbers)
{
    Console.WriteLine(number);
}
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
For Each number In numbers
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

ディクショナリの反復処理:ディクショナリを反復処理するためにforeachループを使用する際には、KeyValuePair構造体を操作する必要があります。 この構造体は、ディクショナリ内のキーと値のペアを表します。

例:

Dictionary<string, int> ageDictionary = new Dictionary<string, int>
{
    { "Alice", 30 },
    { "Bob", 25 },
    { "Charlie", 22 }
};

foreach (KeyValuePair<string, int> entry in ageDictionary)
{
    Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
}
Dictionary<string, int> ageDictionary = new Dictionary<string, int>
{
    { "Alice", 30 },
    { "Bob", 25 },
    { "Charlie", 22 }
};

foreach (KeyValuePair<string, int> entry in ageDictionary)
{
    Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
}
Dim ageDictionary As New Dictionary(Of String, Integer) From {
	{"Alice", 30},
	{"Bob", 25},
	{"Charlie", 22}
}

For Each entry As KeyValuePair(Of String, Integer) In ageDictionary
	Console.WriteLine($"{entry.Key} is {entry.Value} years old.")
Next entry
$vbLabelText   $csharpLabel

LINQとforeachLINQ(Language Integrated Query)は、より宣言的な方法でデータをクエリし操作できる、C#における強力な機能です。 foreachループとLINQを組み合わせて、より表現力豊かで効率的なコードを作成することができます。

例:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Use LINQ to filter out even numbers
        var evenNumbers = numbers.Where(n => n % 2 == 0);

        // Iterate through the even numbers using foreach loop
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Use LINQ to filter out even numbers
        var evenNumbers = numbers.Where(n => n % 2 == 0);

        // Iterate through the even numbers using foreach loop
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Program
	Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}

		' Use LINQ to filter out even numbers
		Dim evenNumbers = numbers.Where(Function(n) n Mod 2 = 0)

		' Iterate through the even numbers using foreach loop
		For Each number In evenNumbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

C#foreachチュートリアルにIronPDF機能を追加する

このセクションでは、「C# foreach」ループのチュートリアルに、C#でPDFファイルを操作するための人気のあるライブラリであるIronPDFを導入します。 IronPDFとforeachループを組み合わせて、データのコレクションに基づいてPDFレポートを生成する方法を示します。

IronPDFの紹介

IronPDFはC#でPDFファイルを作成、編集、コンテンツを抽出するための強力なライブラリです。 PDFドキュメントを扱うための使いやすいAPIを提供し、アプリケーションにPDF機能を組み込む必要がある開発者にとって優れた選択肢です。

IronPDFの主な機能には以下が含まれます:

  • HTML、URL、画像からPDFを生成
  • 既存のPDFドキュメントを編集
  • PDFからテキストや画像を抽出
  • PDFに注釈、フォームフィールド、暗号化を追加

IronPDFのインストール

IronPDFを利用開始するには、IronPDF NuGetパッケージをインストールする必要があります。 IronPDFのドキュメントに記載されている手順に従ってこれを行うことができます。

IronPDFとforeachを使用したPDFレポートの生成

この例では、IronPDFライブラリとforeachループを使用して、製品名や価格を含む製品リストのPDFレポートを作成します。

まず、製品を表すためのシンプルなProductクラスを作成します:

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }

    public Product(string name, decimal price)
    {
        Name = name;
        Price = price;
    }
}
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }

    public Product(string name, decimal price)
    {
        Name = name;
        Price = price;
    }
}
Public Class Product
	Public Property Name() As String
	Public Property Price() As Decimal

	Public Sub New(ByVal name As String, ByVal price As Decimal)
		Me.Name = name
		Me.Price = price
	End Sub
End Class
$vbLabelText   $csharpLabel

次に、Productオブジェクトのリストを作成して、PDFレポートを生成します:

List<Product> products = new List<Product>
{
    new Product("Product A", 29.99m),
    new Product("Product B", 49.99m),
    new Product("Product C", 19.99m),
};
List<Product> products = new List<Product>
{
    new Product("Product A", 29.99m),
    new Product("Product B", 49.99m),
    new Product("Product C", 19.99m),
};
Dim products As New List(Of Product) From {
	New Product("Product A", 29.99D),
	New Product("Product B", 49.99D),
	New Product("Product C", 19.99D)
}
$vbLabelText   $csharpLabel

次に、IronPDFとforeachループを使用して、製品情報を含むPDFレポートを生成します:

using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a list of products
        List<Product> products = new List<Product>
        {
            new Product("Product A", 29.99m),
            new Product("Product B", 49.99m),
            new Product("Product C", 19.99m),
        };

        // Initialize an HTML string to store the report content
        string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";

        // Iterate through the list of products using foreach loop
        foreach (var product in products)
        {
            // Add product information to the HTML report
            htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
        }

        // Close the table tag in the HTML report
        htmlReport += "</table>";

        // Create a new instance of the HtmlToPdf class
        var htmlToPdf = new ChromePdfRenderer();

        // Generate the PDF from the HTML report
        var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);

        // Save the PDF to a file
        PDF.SaveAs("ProductReport.PDF");

        // Inform the user that the PDF has been generated
        Console.WriteLine("ProductReport.PDF has been generated.");
    }
}
using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a list of products
        List<Product> products = new List<Product>
        {
            new Product("Product A", 29.99m),
            new Product("Product B", 49.99m),
            new Product("Product C", 19.99m),
        };

        // Initialize an HTML string to store the report content
        string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";

        // Iterate through the list of products using foreach loop
        foreach (var product in products)
        {
            // Add product information to the HTML report
            htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
        }

        // Close the table tag in the HTML report
        htmlReport += "</table>";

        // Create a new instance of the HtmlToPdf class
        var htmlToPdf = new ChromePdfRenderer();

        // Generate the PDF from the HTML report
        var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);

        // Save the PDF to a file
        PDF.SaveAs("ProductReport.PDF");

        // Inform the user that the PDF has been generated
        Console.WriteLine("ProductReport.PDF has been generated.");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Create a list of products
		Dim products As New List(Of Product) From {
			New Product("Product A", 29.99D),
			New Product("Product B", 49.99D),
			New Product("Product C", 19.99D)
		}

		' Initialize an HTML string to store the report content
		Dim htmlReport As String = "<table><tr><th>Product Name</th><th>Price</th></tr>"

		' Iterate through the list of products using foreach loop
		For Each product In products
			' Add product information to the HTML report
			htmlReport &= $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>"
		Next product

		' Close the table tag in the HTML report
		htmlReport &= "</table>"

		' Create a new instance of the HtmlToPdf class
		Dim htmlToPdf = New ChromePdfRenderer()

		' Generate the PDF from the HTML report
		Dim PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport)

		' Save the PDF to a file
		PDF.SaveAs("ProductReport.PDF")

		' Inform the user that the PDF has been generated
		Console.WriteLine("ProductReport.PDF has been generated.")
	End Sub
End Class
$vbLabelText   $csharpLabel

C# For Each(開発者用の使い方)図1 - 出力結果

結論

このチュートリアルを通じて、「C# foreach」ループの基本、重要性、使用例、およびコードへの実装方法について探求しました。 また、PDFファイルを操作するための強力なライブラリであるIronPDFを紹介し、IronPDFとforeachループを組み合わせてデータのコレクションに基づいたPDFレポートを生成する方法を示しました。

学習を続け、スキルを構築し続けることで、foreachループやその他のC#機能を最大限に活用し、強力で効率的なアプリケーションを作成できるようになります。 IronPDFは、ライブラリをテストするための無料トライアルを提供しています。 購入を決めた場合、IronPDFライセンスは$799から始まります。

よくある質問

C#のforeachループとは何ですか?

C#のforeachループは、配列、リスト、辞書などのコレクションを反復処理するプロセスを簡略化するプログラミング構造です。インデックスやカウントを管理せずに、コレクション内の各アイテムに操作を実行することができます。

C#のforeachループを使ってPDFレポートをどう作成しますか?

データのコレクション(例:製品リスト)を反復処理することで、動的にHTMLレポート文字列を作成し、IronPDFのChromePdfRendererを使用してそれをPDFに変換することが可能です。

C#のforeachループの使用例はどんなものがありますか?

foreachループの一般的な使用例には、コレクション内の値の合計、項目の検索、要素の変更、コレクションの各要素に対する操作があります。

C#のforループとforeachループの違いは何ですか?

foreachループはその読みやすさと単純さで好まれます。forループとは異なり、コレクションのインデックスやカウントを手動で管理する必要がありません。foreachループは読み取り専用の反復処理に最適です。

foreachループでvarキーワードをどのように使いますか?

foreachループでvarキーワードを使用することで、コンパイラがコレクション内の要素のデータ型を推論し、コードをより簡潔で保守しやすくします。

foreachループを使用してコレクションを変更できますか?

foreachループは、実行時エラーの可能性があるため、反復中にコレクションを変更するには適していません。変更が必要な場合は、forループを使用するか、変更済みの新しいコレクションを作成することを検討してください。

C#でforeachループを使用して辞書をどのように反復処理しますか?

C#では、KeyValuePair構造を使用してキーと値の両方に効率的にアクセスすることで、foreachループを使用して辞書を反復処理できます。

foreachループはどのようなタイプのコレクションを反復できますか?

foreachループは、IEnumerableやIEnumerableインターフェイスを実装する任意のコレクションを反復できます。これには、C#の配列、リスト、辞書、その他のコレクションタイプが含まれます。

C#のforeachループの構文は何ですか?

C#のforeachループの構文は次のとおりです:foreach (variableType variableName in collection) { // 各アイテムのために実行するコード }ここで、variableTypeはデータ型、variableNameはループ変数、collectionは反復されるコレクションです。

C#プロジェクトにPDFライブラリをインストールするにはどうすればいいですか?

IronPDFは、IronPDF NuGetパッケージを追加することでC#プロジェクトにインストールできます。インストール手順はIronPDFのドキュメントに記載されています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。