IRONSOFTWAREHOME
開発者向けアップデート

C# Yield Return (開発者向けの仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月23日

C#は、Microsoftによって開発された最も人気のあるプログラミング言語の1つであり、コードに優雅さと効率を追加する機能を提供します。 その機能の1つが、C# 2.0で初めて導入されたyieldキーワードです。Microsoftは、イテレーターメソッドで使用するためのyieldキーワードのステートメントに関する完全な言語リファレンスを提供しており、公式のMicrosoftドキュメントでyieldについてを閲覧できます。

この記事では、C#のyield returnに注目し、その機能、使用例、そしてイテレーションへのアプローチをどのように変えることができるかを探ります。

Understanding the Basics: Iteration in C#

イテレーションはプログラミングにおける基本的な概念であり、C#はそれを実現するためのさまざまなメカニズムを提供しています。 伝統的に、コレクションをイテレートするためには、forループやforeachループが利用されてきました。 しかし、C#は、yieldキーワードとIEnumerableインターフェースを使用することで、returnステートメントに適用されるよりエレガントな解決策を導入します。

yield returnステートメントの効率性

その中核にあるyield returnは、値のシーケンスを生成するためのより効率的な方法を提供するイテレーターメソッドで使用されるステートメントです。 これは、メモリ内の全コレクションを生成する必要がなくイテレーターを作成できるため、特に大規模なデータセットや無限のシーケンスを扱う際に有用です。

ここに、yield returnの基本的な使用法を示す単純なコードスニペットがあります。

using System;
using System.Collections.Generic;

public class Example
{
    // Method that generates numbers from start to end using 'yield return'
    public IEnumerable<int> GenerateNumbers(int start, int end)
    {
        // Loop from 'start' to 'end'
        for (int i = start; i <= end; i++)
        {
            yield return i; // Returns each number in the sequence without breaking the loop
        }
    }

    public static void Main()
    {
        // Usage: Using 'foreach' to iterate over numbers generated by 'GenerateNumbers'
        foreach (var number in new Example().GenerateNumbers(1, 5))
        {
            Console.WriteLine(number); // Outputs numbers 1 - 5
        }
    }
}

この例では、endまでの数のシーケンスを生成します。 イテレーターは遅延評価され、各数値はイテレーションの実行中に要求に応じて生成されます。

遅延評価と効率性

yield returnステートメントの大きな利点の一つは、遅延評価をサポートする能力です。 反復前に全体のコレクションを生成する従来の方法とは違い、yield returnは一度に一つずつ値を生成します。これは、大規模なデータセットを扱う際に、メモリの大幅な節約につながる可能性があります。

状態保持型イテレーション: 複雑なシナリオの処理

yield returnステートメントは単純なシーケンスの生成に限定されません。 イテレーター・ブロックで複雑なシナリオを処理するのに優れています。 イテレーションを通じて状態機械を維持することで、シーケンス内の位置を記憶するイテレーターを作成することができます。

using System;
using System.Collections.Generic;

public class FibonacciExample
{
    // Method that generates Fibonacci numbers up to the specified count
    public IEnumerable<string> GenerateFibonacci(int count)
    {
        int a = 0, b = 1;
        for (int i = 0; i < count; i++)
        {
            yield return a.ToString(); // Returns the Fibonacci number as a string
            int temp = a;
            a = b;
            b = temp + b;
        }
    }

    public static void Main()
    {
        // Usage: Iterating over Fibonacci numbers generated by 'GenerateFibonacci'
        foreach (var fibNumber in new FibonacciExample().GenerateFibonacci(8))
        {
            Console.WriteLine(fibNumber); // Outputs a Fibonacci number sequence
        }
    }
}

この例では、yield returnを使用してフィボナッチ数列を作成します。 イテレーション間で状態が維持され、効率的にフィボナッチ数を生成および出力します。

無限のシーケンスを構築

yield returnの興味深い応用の一つは、無限に続く値のシーケンスを作成できることです。 値がオンザフライで生成されるため、無限メモリを消費することなく無限に続くシーケンスを表現できます。

using System;
using System.Collections.Generic;

public class InfiniteSequenceExample
{
    // Method that generates an infinite sequence of even numbers
    public IEnumerable<int> GenerateEvenNumbers()
    {
        int num = 0;
        while (true)
        {
            yield return num;
            num += 2;
        }
    }

    public static void Main()
    {
        // Usage: Generating even numbers using the 'GenerateEvenNumbers' method
        var evenNumberIterator = new InfiniteSequenceExample().GenerateEvenNumbers().GetEnumerator();
        for (int i = 0; i < 5; i++)
        {
            evenNumberIterator.MoveNext();
            Console.WriteLine(evenNumberIterator.Current); // Outputs the first 5 even numbers
        }
    }
}

この例では、GenerateEvenNumbersメソッドは偶数のイテレーターを作成し、必要に応じて反復できます。 yield returnと共に使用してループを終了および退出し、カスタムイテレーションを作成することもできます。

IronPDFの紹介: パワフルなC#ライブラリ

C# Yield Return (開発者向けの動作方法): 図1 - IronPDFのウェブページ

IronPDFは、PDFを扱う際の複雑さを簡素化するように設計された多用途なC#ライブラリとして際立っています。 請求書やレポート、その他のドキュメントを生成する際、IronPDFはHTMLコンテンツをシームレスに変換し、C#アプリケーション内で洗練されたプロフェッショナルなPDFを作成する力を提供します。

IronPDFのインストール:クイックスタート

IronPDFをC#プロジェクトに組み込むには、IronPDF NuGetパッケージを迅速にインストールできます。 次のコマンドをPackage Manager Consoleで実行してください:

PM > Install-Package IronPdf

または、NuGetパッケージマネージャーで"IronPDF"を見つけてそこからインストールすることもできます。

IronPDFでPDFを生成する

IronPDFを使用してPDFを作成するのは簡単なプロセスです。 基本的な例を考えてみましょう:

using IronPdf;

public class PdfGenerationExample
{
    public static void Main()
    {
        var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        
        // Create a new PDF renderer instance
        var pdfRenderer = new ChromePdfRenderer();
        
        // Render the HTML content as a PDF and save it to a file
        pdfRenderer.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");
    }
}

上記の例では、IronPDFを使用してHTMLコンテンツをPDFドキュメントに変換し、指定された場所に保存します。 より詳細な情報については、IronPDFのドキュメントをご覧ください。

yield returnとIronPDFの交差点

次に、遅延評価と効率的な反復のための強力なツールであるyield returnステートメントがIronPDFとシームレスに統合できるかどうかを探ってみましょう。

yield returnを使用してアイテムのリストでPDFドキュメントを生成する必要があるシナリオを考えてみましょう。 yieldステートメントの利点を活用してコンテンツを動的に生成し、その後IronPDFを使用してそのコンテンツをPDFに変換することができます。 次のコードスニペットは、yieldステートメントの助けを借りてPDFコンテンツに動的制御を加えたPDFドキュメントを生成します。

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

class Program
{
    // Method that dynamically generates content using 'yield return'
    public static IEnumerable<string> GenerateDynamicContent()
    {
        yield return "Item 1";
        yield return "Item 2";
        yield return "Item 3";
    }

    public static void Main(string[] args)
    {
        // Generate dynamic content using the 'GenerateDynamicContent' function
        var dynamicContent = GenerateDynamicContent();

        // Create HTML structure for the PDF document with dynamic content
        var dynamicPdfContent = $@"
            <html>
            <body>
                <h1>List of Items</h1>
                <ul>
                    {string.Join("", dynamicContent.Select(item => $"<li>{item}</li>"))}
                </ul>
            </body>
            </html>
        ";

        // Create a new PDF document with dynamically generated content
        var dynamicPdfRenderer = new ChromePdfRenderer();
        dynamicPdfRenderer.RenderHtmlAsPdf(dynamicPdfContent).SaveAs("C:/DynamicItems.pdf");
    }
}

この例では、yield returnを利用して動的なアイテムのシーケンスを提供します。 生成されたコンテンツはHTML構造に組み込まれ、IronPDFによってPDFドキュメントが作成されます。

C# Yield Return (開発者向けの動作方法): 図2 - 前述のコードからの出力PDF

結論

結論として、yield returnは、C#における強力でエレガントな機能であり、反復のアプローチを変えます。 遅延評価をサポートし、状態を持つイテレーションで複雑なシナリオを処理し、無限のシーケンスを作成する能力は、プログラムツールキットにおいて価値のあるツールです。 大規模なデータセットを扱っているか、洗練されたアルゴリズムを実装しているかにかかわらず、yield returnは、より効率的で表現力豊かなコードを書く力をあなたに与えます。

yield returnが効率的でオンデマンドのコンテンツ生成を促進する一方で、IronPDFはそのコンテンツをプロフェッショナルなPDFドキュメントにシームレスに変換します。 動的にリスト、レポート、またはその他の文書を作成する際に、このシナジーがC#ドキュメント生成能力を新たな高みへと引き上げることができます。 この動的デュオの可能性を受け入れて、あなたのPDFを動的で効率的に生成されたコンテンツで輝かせましょう!

IronPDFは、その完全な機能を商業モードと同様にテストする無料トライアルを提供しています。 IronPDFのライセンスについて$999から始まる詳細を学びましょう。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から