.NET ヘルプ

C# 継続(開発者にとっての働き方)

イントロダクション

制御フロー文はプログラミングにおいて非常に重要です。それはプログラム内の命令の実行順序を決定するからです。 C# では、ループを制御するための3つの基本的なステートメントは「continue」、「break」、「goto」です。 これらの文はプログラマーにループ内の実行フローを変更する能力を提供し、コードの効率と可読性を向上させます。 この記事では、C#のcontinueメソッドとbreakメソッドの詳細について、構文、用途、およびベストプラクティスを探ります。 この記事の後半では、PDFドキュメントを読み書きするためのIronPDF - 強力なC# PDFライブラリについても学びます。提供元はIron Softwareです。

'continue;'ステートメントを理解する

continue ステートメントは、ループ構造内で使用され、残りのコードブロックをスキップし、ループの次の繰り返しに進むために使われます。これは本質的に、プログラム制御に現在の反復の残りのコードをスキップして次の反復に移るよう指示します。

構文

continue;
continue;
continue
$vbLabelText   $csharpLabel

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Demonstrate Continue Method in C#");
        Console.WriteLine("Print 1 to 10 skip 5");
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue; // Skips iteration when i equals 5
            }
            Console.WriteLine(i);
        }
    }
}
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Demonstrate Continue Method in C#");
        Console.WriteLine("Print 1 to 10 skip 5");
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue; // Skips iteration when i equals 5
            }
            Console.WriteLine(i);
        }
    }
}
Public Class Program
	Public Shared Sub Main()
		Console.WriteLine("Demonstrate Continue Method in C#")
		Console.WriteLine("Print 1 to 10 skip 5")
		For i As Integer = 0 To 9
			If i = 5 Then
				Continue For ' Skips iteration when i equals 5
			End If
			Console.WriteLine(i)
		Next i
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、i が 5 のときに continue 文が実行され、そのイテレーションのループ内の残りのコードがスキップされます。 その結果、数字5は印刷されず、ループは次の反復処理に進みます。

出力

C# Continue(開発者向けの仕組み):図1 - コンソール出力が continue 文によりケース 5 をスキップしている様子を示しています

「break;」メソッドの探求

continueとは逆に、breakステートメントはループを途中で終了するために使用されます。 それに遭遇すると、ループの条件にかかわらず、ループの実行が終了します。 特定の条件が満たされた場合、whileループのようなループから早期に抜ける際によく使用されます。

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in numbers)
{
    if (number == 6)
    {
        break; // Exits loop when number equals 6
    }
    Console.WriteLine(number);
}
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in numbers)
{
    if (number == 6)
    {
        break; // Exits loop when number equals 6
    }
    Console.WriteLine(number);
}
Dim numbers() As Integer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
For Each number As Integer In numbers
	If number = 6 Then
		Exit For ' Exits loop when number equals 6
	End If
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

この例では、ループがnumbers配列を反復処理します。 6という数字に遭遇したとき、breakステートメントが実行され、ループが早期に終了します。 その結果、1から5までの数字のみが印刷されます。

'goto;' ステートメントを探る

C# の goto ステートメントは、同じメソッド内、同じ switch ステートメント内、または同じループ内の指定されたラベルに制御を移す方法を提供します。goto はジャンプステートメントの実行フローを変更するための強力なツールである一方、コードの可読性と保守性を低下させる可能性があるため、現代のプログラミング手法ではしばしば推奨されません。 しかし、gotoが効果的かつ安全に使用される状況もあります。

構文

C#におけるgotoステートメントの構文は簡単です:

goto label;
goto label;
GoTo label
$vbLabelText   $csharpLabel

ラベルは、識別子の後にコロン(:)が続くもので、コード内のターゲットの位置を示します。

特定の条件が満たされた場合に、ネストされたループを早期に終了したいと考えているシナリオを考えてください。 これを実現するには、goto文を使用することができます。

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        if (i * j > 10)
        {
            goto exitLoop;
        }
        Console.WriteLine($"i: {i}, j: {j}");
    }
}
exitLoop:
Console.WriteLine("Exited the nested loop prematurely.");
for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        if (i * j > 10)
        {
            goto exitLoop;
        }
        Console.WriteLine($"i: {i}, j: {j}");
    }
}
exitLoop:
Console.WriteLine("Exited the nested loop prematurely.");
For i As Integer = 0 To 4
	For j As Integer = 0 To 4
		If i * j > 10 Then
			GoTo exitLoop
		End If
		Console.WriteLine($"i: {i}, j: {j}")
	Next j
Next i
exitLoop:
Console.WriteLine("Exited the nested loop prematurely.")
$vbLabelText   $csharpLabel

この例では、goto文が条件 i * j > 10 が満たされた時にexitLoopラベルに制御を移し、ネストされたループを実質的に脱出します。

IronPDF - 包括的なPDFライブラリIron Softwareからご紹介します。

IronPDFは、Iron Softwareによって開発された強力なC# PDFライブラリであり、.NETプロジェクトでPDFを扱うためのオールインワンソリューションを提供します。 PDFドキュメントの作成、編集、エクスポート、セキュリティ、読み込み、操作が必要な場合でも、IronPDFはすべてをカバーしています。 ここでは、いくつかの主要な機能と使用例を紹介します:

  1. HTML から PDF への変換: HTML コンテンツをシームレスに PDF 形式に変換します。 HTML、MVC、ASPX、さらには画像からPDFを生成することができます。

  2. PDFに署名、編集、読み取り: 50以上の機能を備えたIronPDFは、PDFファイルに署名、編集、コンテンツの抽出が可能です。 デジタル署名を追加する場合でも、既存のPDFを修正する場合でも、IronPDFはそれを簡単にします。

  3. クロスプラットフォーム対応: IronPDFは、C#、F#、VB.NET用に設計されており、.NET Core、.NET Standard、.NET Frameworkなど、さまざまな.NETバージョンで動作します。 これはまた、Java、Node.js、およびPythonでも利用できます。

  4. 互換性と環境

    • .NETバージョン: C#、VB.NET、およびF#をサポートします。

    • プロジェクトタイプ: ウェブ (Blazor & WebForms), デスクトップ (WPF & MAUI), コンソールアプリケーションに対応します。

    • アプリ環境: Windows、Linux、Mac、Docker、Azure、AWSなどに対応。

    • IDEs: Microsoft Visual Studio および JetBrains Rider とシームレスに統合されます。

    • OS & プロセッサー: Windows、Mac、およびLinux(x64、x86、ARM)で動作します。
  5. PDF標準と編集

    • さまざまなPDFバージョン(1.2 - 1.7)、PDF/UA、およびPDF/Aに対応しています。

    • PDFファイルのプロパティ設定、セキュリティ、および圧縮を行います。

    • メタデータ、リビジョン履歴、および文書構造を編集する。

    • ページテンプレート、ヘッダー、フッター、およびページ設定を適用します。
  6. パフォーマンス最適化:

    • 効率的なPDF生成のための完全なマルチスレッドおよび非同期サポート。

    • 正確さ、使いやすさ、および速度を優先します。

    IronPDFライブラリを把握したところで、IronPDFとcontinueステートメント、breakステートメント、gotoステートメントを使用するアプリケーションを書いてみましょう。

続行ステートメントを使用してPDFドキュメントを生成する

まずは、Visual Studio コンソール アプリケーションを作成しましょう。

C# Continue(開発者向けの動作方法):図2 - Visual Studioコンソールアプリの作成

プロジェクト名と場所を提供してください。

C# Continue (開発者向けの仕組み): 図3 - プロジェクト名を指定する

次のステップとして、必要な .NET バージョンを選択し、[作成] をクリックしてください。

以下のコマンドを使用してIronPDFをインストールします。

dotnet add package IronPdf --version 2024.4.2
dotnet add package IronPdf --version 2024.4.2
SHELL

では、制御文を使用してPDFドキュメントを生成しましょう。

using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;
class Program
{
    public static async Task Main()
    {
        Console.WriteLine("Generate PDF document Using IronPDF");
        var htmlToPdf = new ChromePdfRenderer();
        var content = "<h1>Generate Numbers from 1 to 10, skip 5</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue;
            }
            content += $"<p>{i}</p>";
        }
        content += "<h1>Generate Numbers from 1 to 10, stop at 7</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 7)
            {
                break;
            }
            content += $"<p>{i}</p>";
        }
        var pdf = htmlToPdf.RenderHtmlAsPdf(content);
        pdf.SaveAs("AwesomeIronPDF.pdf");
        Console.WriteLine("PDF generated successfully.");
    }
}
using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;
class Program
{
    public static async Task Main()
    {
        Console.WriteLine("Generate PDF document Using IronPDF");
        var htmlToPdf = new ChromePdfRenderer();
        var content = "<h1>Generate Numbers from 1 to 10, skip 5</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue;
            }
            content += $"<p>{i}</p>";
        }
        content += "<h1>Generate Numbers from 1 to 10, stop at 7</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 7)
            {
                break;
            }
            content += $"<p>{i}</p>";
        }
        var pdf = htmlToPdf.RenderHtmlAsPdf(content);
        pdf.SaveAs("AwesomeIronPDF.pdf");
        Console.WriteLine("PDF generated successfully.");
    }
}
Imports System
Imports System.Threading.Tasks
Imports System.Diagnostics
Imports IronPdf
Friend Class Program
	Public Shared Async Function Main() As Task
		Console.WriteLine("Generate PDF document Using IronPDF")
		Dim htmlToPdf = New ChromePdfRenderer()
		Dim content = "<h1>Generate Numbers from 1 to 10, skip 5</h1>"
		For i As Integer = 0 To 9
			If i = 5 Then
				Continue For
			End If
			content &= $"<p>{i}</p>"
		Next i
		content &= "<h1>Generate Numbers from 1 to 10, stop at 7</h1>"
		For i As Integer = 0 To 9
			If i = 7 Then
				Exit For
			End If
			content &= $"<p>{i}</p>"
		Next i
		Dim pdf = htmlToPdf.RenderHtmlAsPdf(content)
		pdf.SaveAs("AwesomeIronPDF.pdf")
		Console.WriteLine("PDF generated successfully.")
	End Function
End Class
$vbLabelText   $csharpLabel

コードの説明

  1. 最初に、PDFドキュメントで使用するコンテンツを作成しています。

  2. 私たちはコンテンツをHTMLドキュメントとして準備します。

  3. 私たちは、1から10までを出力し、5をスキップするためにforループ内でcontinue文を使用します。

  4. また、1から7まで印刷して中断するためにbreakステートメントを使用します。

  5. 次に、ChromePdfRendererオブジェクトを使用してHTML文書をPDF文書に保存します。

出力

C# Continue(開発者向けの仕組み):図4 - continueとbreakメソッドの動作を示す出力例

ベストプラクティスと考慮事項

  1. 明確さと可読性: ほとんどの場合、breakcontinue やネストされたループのような構造化された制御フロー文を使用することで、コードをより可読で理解しやすくすることができます。 goto 文は、特に大規模なコードベースや過度に使用された場合に、コードを追跡しにくくすることがあります。

  2. 不本意な結果を避ける: goto の誤用はスパゲッティコードにつながり、プログラムの振る舞いを考えるのが難しくなる可能性があります。 gotoを慎重に使用し、その使用が明確でよく文書化されていることを確認することが不可欠です。

  3. エラーハンドリング: goto の一般的な使用例の一つに、クリーンアップやエラーハンドリングのルーチンにジャンプするエラーハンドリングシナリオがあります。しかし、現代のC#コードベースでは、より構造化され読みやすいアプローチを提供するエラーハンドリングのために、構造化例外処理(try-catch-finally)を使用することが多いです。

  4. パフォーマンスの考慮事項: パフォーマンスの観点からは、gotoは一般的に最小限の影響しか与えません。 しかし、gotoの主な懸念は、パフォーマンスよりも保守性と読みやすさです。

ライセンス(試用版あり)

IronPDFライセンスの詳細を探る

試用開発者ライセンスは試用ライセンスを取得できます。

appSettings.jsonファイルに示されているKeyを置き換えてください。

{
  "IronPdf.License.LicenseKey": "The Key Here"
}

結論

結論として、continue および break メソッドは、C# においてループの実行を制御するための不可欠なツールです。 これらのステートメントをコードに戦略的に組み込むことで、その効率性、可読性、および保守性を向上させることができます。 C#のgotoステートメントは実行の流れを変更するメカニズムを提供しますが、その使用は慎重に行うべきです。 ほとんどの場合、breakcontinue、またはネストされたループのような構造化された制御フロー文は、より明確で保守しやすいソリューションを提供します。 ただし、特定のエラー処理の状況などで、gotoが効果的かつ安全に使用できるニッチなシナリオがあります。 他のプログラミング構造と同様に、gotoを使用するかどうかを決定する際には、トレードオフを慎重に評価し、コードの可読性と保守性を考慮することが重要です。

IronPDF - Comprehensive PDF Solutions ライブラリーを Iron Software と一緒に使用してPDFドキュメントを読み取り、生成することで、開発者は最新のアプリケーションを開発するための高度なスキルを得ることができます。

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