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

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

この包括的なチュートリアルでは、public static void Main メソッド内で for ループを始めるために知っておくべきすべてをカバーします。 for ループ、ループ変数、ループ本体、繰り返し変数、内側と外側のループ、無限ループ、ブール式、ネストされたループなどを探索します。 さあ、始めましょう!

for ループの始め方

C# では for ループは、反復回数が正確にわかっている場合に特に設計されたループの一種です。 C# における for ループの構文は以下のコードブロックに示されています:

for (initialization; condition; increment)
{
    // Loop body
}
for (initialization; condition; increment)
{
    // Loop body
}
initialization
Do While condition
	' Loop body
	increment
Loop
$vbLabelText   $csharpLabel

for ループのコンポーネントを分解してみましょう:

  1. 初期化: ここでループ変数、または繰り返し変数が宣言され、初期化されます。
  2. 条件: ループが複数回ステートメントを実行し続けるべきかどうかを決定するブール/条件式です。
  3. 増加: 各反復後に反復変数を更新するステートメントです。

Static Void Main とループ変数

C# では、static void Main メソッドまたは static void Main(String []args) はアプリケーションのエントリーポイントです。 ここからプログラムの実行が開始されます。 ここに static void Main メソッド内での for ループの使い方の例があります:

using System;

class Program
{
    static void Main()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("This is the first for loop!");
        }
    }
}
using System;

class Program
{
    static void Main()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("This is the first for loop!");
        }
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		For i As Integer = 0 To 4
			Console.WriteLine("This is the first for loop!")
		Next i
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、ループ変数 int i が 0 に初期化され、変数として機能します。 ループは i5 未満である限り実行を続けます。 各反復の後、増分操作 i++ により i の値が 1 増加します。

ネストされたループの探求

ネストされたループは、他のループの中に配置されたループで、内側と外側のループにイテレーターセクションがあります。 これらは、行列のような多次元データ構造を扱うとき、またはすべての要素の組み合わせに対して特定の操作を行う必要があるときに有用です。

ここに、外側のループ内に内側のループがあるネストされた for ループの C# の例があります:

for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 2; j++)
    {
        Console.WriteLine($"i: {i}, j: {j}");
    }
}
for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 2; j++)
    {
        Console.WriteLine($"i: {i}, j: {j}");
    }
}
For i As Integer = 0 To 2
	For j As Integer = 0 To 1
		Console.WriteLine($"i: {i}, j: {j}")
	Next j
Next i
$vbLabelText   $csharpLabel

この例では、外側のループが実行され、i が 0 に等しい状態で開始します。その後、内側のループは j のすべての可能な値を反復し、その後次の i の値に進みます。

無限ループとループ制御

無限ループは、そのテスト条件が決して偽にならないために終了しないループです。 これらは危険であり、プログラムが無期限にハングする可能性があります。 ループの終了条件が最終的に満たされることを確認するために、while ループや foreach ループなどを書くときは注意が必要です。 以下は、C# で特定の条件が指定されていない無限ループの例です。

// This is an example of an infinite loop
for (int i = 0; ; i++)
{
    Console.WriteLine("This loop will run forever!");
}
// This is an example of an infinite loop
for (int i = 0; ; i++)
{
    Console.WriteLine("This loop will run forever!");
}
' This is an example of an infinite loop
Dim i As Integer = 0
Do
	Console.WriteLine("This loop will run forever!")
	i += 1
Loop
$vbLabelText   $csharpLabel

標準の for ループ構造に加えて、C# はループをより効果的に管理するために breakcontinue といったループ制御ステートメントも提供します。

  • break: このステートメントはループを即座に終了するために使用されます。break ステートメントに出会うと、ループは終了し、プログラムはループの外の次のコード行を続けます。
  • continue: このステートメントはループ本体内の現在の反復用の残りのコードをスキップして、次の反復にジャンプするために使用されます。

ここに、for ループにおける breakcontinue の使用を示す例があります:

for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        break; // Exits the loop when i is equal to 5
    }

    if (i % 2 == 0)
    {
        continue; // Skips even numbers
    }

    Console.WriteLine($"Odd number: {i}");
}
for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        break; // Exits the loop when i is equal to 5
    }

    if (i % 2 == 0)
    {
        continue; // Skips even numbers
    }

    Console.WriteLine($"Odd number: {i}");
}
For i As Integer = 0 To 9
	If i = 5 Then
		Exit For ' Exits the loop when i is equal to 5
	End If

	If i Mod 2 = 0 Then
		Continue For ' Skips even numbers
	End If

	Console.WriteLine($"Odd number: {i}")
Next i
$vbLabelText   $csharpLabel

この例では、i5 に達すると、ループが終了します。 continue ステートメントは偶数をスキップするために使用され、5 未満の奇数のみが出力されます。

ブール式とループ条件

ループ条件は、ループが実行を続けるべきかどうかを決定するブール式です。 この式は各反復の前に評価され、式が true の場合にのみループが実行されます。 多くのループでよく使用されるブール式には以下があります:

  • 比較: i < 10, i >= 10, i > 10, i == 10, i != 10
  • 論理演算子: && (AND), || (OR), ! (NOT)

論理演算子を使って複数の式を組み合わせて、より複雑なループ条件を作成できます。 例えば:

for (int i = 0; i < 10 && i != 5; i++)
{
    Console.WriteLine(i);
}
for (int i = 0; i < 10 && i != 5; i++)
{
    Console.WriteLine(i);
}
Dim i As Integer = 0
Do While i < 10 AndAlso i <> 5
	Console.WriteLine(i)
	i += 1
Loop
$vbLabelText   $csharpLabel

この例では、i10 未満で、5 と等しくない限り、ループは実行されます。

コードブロックとループ本体

コードブロックは、波括弧 {} で囲まれた一連のステートメントです。 for ループでは、ループ宣言に続くコードブロックがループ本体として知られています。 ここに、ループの各反復で実行したいコードを配置します。

for (int i = 0; i < 5; i++)
{
    // This is the loop body
    Console.WriteLine($"Iteration: {i}");
}
for (int i = 0; i < 5; i++)
{
    // This is the loop body
    Console.WriteLine($"Iteration: {i}");
}
For i As Integer = 0 To 4
	' This is the loop body
	Console.WriteLine($"Iteration: {i}")
Next i
$vbLabelText   $csharpLabel

この例では、ループ本体は現在の反復番号を出力する Console.WriteLine ステートメントの 1 つで構成されています。

ループ実行ステップ

コードに for ループが出現すると、以下の一連のイベントが発生します:

  1. ループ変数が初期化されます。
  2. ブール式が評価されます。 式が false である場合、ループはスキップされ、プログラムはループの外の次のコード行を続けます。
  3. 式が true である場合、ループ本体が実行されます。
  4. ループ変数が増加または更新されます。
  5. ステップ2-4がブール式が false になるまで繰り返されます。

IronPDF を使用した For ループによるレポート生成の統合

IronPDF のPDF生成機能について学び、C# で動的で強力なPDFレポートを作成します。 特に、ループ内で処理されたデータに基づいて動的なレポートやドキュメントを作成する必要がある場合、for ループで作業するときに役立つツールです。 このセクションでは、C# for ループと連携して IronPDF を使用して簡単なレポートを生成する方法を示します。

まず、IronPDF の NuGet パッケージをインストールする必要があります。 Visual Studio のパッケージマネージャーコンソールを使用してこれを行うことができます:

Install-Package IronPdf

IronPDF をインストールしたら、for ループを使用して数値とその平方を含むテーブルを含む HTML から IronPDF を使用して PDF レポート を生成する簡単な例を作成しましょう。

ステップ 1: 必要な名前空間を追加します。

using IronPdf;
using System.IO;
using IronPdf;
using System.IO;
Imports IronPdf
Imports System.IO
$vbLabelText   $csharpLabel

ステップ 2: GenerateReport という新しいメソッドを作成します。

static void GenerateReport()
{
    // Create an HTML template for the report
    var htmlTemplate = @"
    <html>
        <head>
            <style>
                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th, td {
                    border: 1px solid black;
                    padding: 8px;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Number Squares Report</h1>
            <table>
                <thead>
                    <tr>
                        <th>Number</th>
                        <th>Square</th>
                    </tr>
                </thead>
                <tbody>
                    {0}
                </tbody>
            </table>
        </body>
    </html>";

    // Generate the table rows using a for loop
    string tableRows = "";
    for (int i = 1; i <= 10; i++)
    {
        tableRows += $"<tr><td>{i}</td><td>{i * i}</td></tr>";
    }

    // Insert the generated table rows into the HTML template
    string finalHtml = string.Format(htmlTemplate, tableRows);

    // Create a new PDF document from the HTML using IronPdf
    var pdf = new IronPdf.ChromePdfRenderer();
    var document = pdf.RenderHtmlAsPdf(finalHtml);

    // Save the PDF to a file
    document.SaveAs("NumberSquaresReport.pdf");
}
static void GenerateReport()
{
    // Create an HTML template for the report
    var htmlTemplate = @"
    <html>
        <head>
            <style>
                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th, td {
                    border: 1px solid black;
                    padding: 8px;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Number Squares Report</h1>
            <table>
                <thead>
                    <tr>
                        <th>Number</th>
                        <th>Square</th>
                    </tr>
                </thead>
                <tbody>
                    {0}
                </tbody>
            </table>
        </body>
    </html>";

    // Generate the table rows using a for loop
    string tableRows = "";
    for (int i = 1; i <= 10; i++)
    {
        tableRows += $"<tr><td>{i}</td><td>{i * i}</td></tr>";
    }

    // Insert the generated table rows into the HTML template
    string finalHtml = string.Format(htmlTemplate, tableRows);

    // Create a new PDF document from the HTML using IronPdf
    var pdf = new IronPdf.ChromePdfRenderer();
    var document = pdf.RenderHtmlAsPdf(finalHtml);

    // Save the PDF to a file
    document.SaveAs("NumberSquaresReport.pdf");
}
Shared Sub GenerateReport()
	' Create an HTML template for the report
	Dim htmlTemplate = "
    <html>
        <head>
            <style>
                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th, td {
                    border: 1px solid black;
                    padding: 8px;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Number Squares Report</h1>
            <table>
                <thead>
                    <tr>
                        <th>Number</th>
                        <th>Square</th>
                    </tr>
                </thead>
                <tbody>
                    {0}
                </tbody>
            </table>
        </body>
    </html>"

	' Generate the table rows using a for loop
	Dim tableRows As String = ""
	For i As Integer = 1 To 10
		tableRows &= $"<tr><td>{i}</td><td>{i * i}</td></tr>"
	Next i

	' Insert the generated table rows into the HTML template
	Dim finalHtml As String = String.Format(htmlTemplate, tableRows)

	' Create a new PDF document from the HTML using IronPdf
	Dim pdf = New IronPdf.ChromePdfRenderer()
	Dim document = pdf.RenderHtmlAsPdf(finalHtml)

	' Save the PDF to a file
	document.SaveAs("NumberSquaresReport.pdf")
End Sub
$vbLabelText   $csharpLabel

Program.cs ファイルから GenerateReport メソッドを呼び出します:

GenerateReport();
GenerateReport();
GenerateReport()
$vbLabelText   $csharpLabel

IronPDF の数の平方レポート

この例を実行すると、"NumberSquaresReport.pdf" という名前のPDFレポートがアプリケーションの出力ディレクトリに生成されます。 レポートには、1から10までの数とそれらの平方を含むテーブルが含まれ、C# for ループを使用して生成されます。

結論

結論として、この包括的なチュートリアルは、C# for ループとそれに関連する概念のしっかりした基礎を提供しました。ループ変数、ループ本体、繰り返し変数、内側と外側のループ、無限ループ、ブール式、コードブロック、ネストされたループを探求し、for ループを使用して動的なPDFレポートを生成するための強力な IronPDF ライブラリの統合方法も示しました。

IronPDF は、その機能をテストするための IronPDF の無料トライアル を提供しており、これが役立つと感じた場合、ライセンスはあなたのニーズに合った手頃なオプションから始まります。

よくある質問

C#のforループはどのように機能しますか?

C#のforループは、指定した回数コードのブロックを繰り返し実行するために使用されます。それは、ループの実行を制御する初期化、条件、およびインクリメントという3つの主要部分で構成されています。

'static void Main'メソッドのC#での役割は何ですか?

'static void Main'メソッドは、C#アプリケーションのエントリーポイントとして機能します。プログラムが実行を開始する場所であり、さまざまなタスクを実行するためにforループのような初期コードを含むことがよくあります。

C#でforループを使用してPDFレポートを生成するにはどうすればよいですか?

IronPDFのようなライブラリを使用して、C#でPDFレポートを生成することができます。forループはデータを処理し、テーブルやレポートにフォーマットするために利用でき、これはIronPDFを使用してPDFドキュメントとしてレンダリングできます。

ネストされたループとは何ですか、そしてそれらはC#でどのように機能しますか?

C#でのネストされたループは、他のループの内部に配置されたループです。これらは、多次元データ構造を扱うのに特に便利で、要素の組み合わせに対して操作を実行することができます。

C#で無限ループを防ぐにはどうすればよいですか?

無限ループを防ぐには、ループの条件が最終的に偽になることを確実にします。特定の条件が満たされたときにループを終了するために、'break'のようなループ制御ステートメントを利用してください。

C#のループで使用される'break'と'continue'ステートメントは何に使われますか?

C#において、'break'ステートメントはループを直ちに抜けるために使用され、'continue'ステートメントは現在の反復をスキップし、次の反復を続行します。

forループ内でのブール式はどのように機能しますか?

forループ内のブール式は、ループが実行を続けるべきかどうかを決定します。これらは各反復の前に評価され、ループを続行するためにはtrueを返す必要があります。

forループと併用するためにC#ライブラリをインストールするにはどうすればよいですか?

適切なインストールコマンドを使用してVisual Studioのパッケージマネージャーコンソールを介してC#ライブラリをインストールすることができ、それによりforループ内でその機能を活用することが可能になります。

Curtis Chau
テクニカルライター

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

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