.NET ヘルプ

C#のForループ(開発者向けの動作方法)

この包括的なチュートリアルでは、public static void Main メソッド内でforループを始めるために必要なすべての知識をカバーします。 forループ、ループ変数、ループ本体、反復変数、内側ループと外側ループ、無限ループ、ブール式、入れ子ループなどについて説明します。 さあ、始めましょう!

forループの始め方

forループはC#におけるループの一種であり、特に何回反復するかが正確にわかっている場合に設計されています。 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. インクリメント: このステートメントは、各反復の後に繰り返し変数を更新します。

スタティック・ボイド・メインとループ変数

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増加させます。

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

C#のネストされたループは、他のループの内側に配置されるループであり、イテレータセクションを持つ内側のループと外側のループを形成します。 これらは、行列のような多次元データ構造を扱うときや、要素の組み合わせごとに特定の操作を実行する必要があるときに役立ちます。

以下は、C#の外側ループの中に内側ループがある、入れ子になったforループの例です:

    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 から始まります。内側のループは、その後、次の i の値に進む前に、すべての可能な j の値を反復処理します。

無限ループとループ制御

無限ループとは、テスト条件が決してfalseにならないために終了しないループのことです。 これらは危険であり、プログラムが無期限にハングする原因となる可能性があります。 ループ(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), **

    **(または)、**!`**(ではない)

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

    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ステートメントで構成されています。

ループ実行ステップ

コード内でforループに出会うと、次のイベントのシーケンスが発生します:

  1. ループ変数が初期化されます。

  2. ブール式が評価されます。 式がfalseの場合、ループはスキップされ、プログラムはループ外の次のコード行に進みます。

  3. 式がtrueの場合、ループ本体が実行されます。

  4. ループ変数がインクリメントまたは更新されます。

  5. ステップ2から4は、ブール式がfalseになるまで繰り返されます。

ループを使用してレポートを生成するためのIronPDFの統合

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

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

    Install-Package IronPDF
    Install-Package IronPDF
SHELL

IronPDFをインストールしたら、IronPDFを使用してHTMLからPDFレポートを生成するシンプルな例を作成しましょう。これは、forループを使用して数字とその二乗の表を含むものです。

ステップ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 two variables
    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 two variables
    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 two variables
	Dim pdf = New IronPdf.ChromePdfRenderer()
	Dim document = pdf.RenderHtmlAsPdf(finalHtml)

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

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

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

IronPDFからの数の平方レポート

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

結論

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

IronPDFは、その機能を試すためのIronPDFの無料トライアルを提供しており、役立つと感じた場合は、ニーズに合った手頃な価格のオプションからライセンスを購入できます。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C# 秒数を待機する方法(開発者向け)
次へ >
C# 文字列置換 (開発者のための動作方法)