IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

yield return en C# | Iteradores y evaluación diferida

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 23 de abril de 2026

C# es uno de los lenguajes de programación más populares desarrollados por Microsoft, que proporciona características que aportan elegancia y eficiencia a tu código. Una de esas características es la palabra clave yield, que se introdujo por primera vez en C# 2.0. Microsoft proporciona una referencia completa del lenguaje sobre las declaraciones de palabras clave yield para explorar más sobre su uso en métodos iteradores, que puedes ver en la documentación oficial de Microsoft sobre yield.

En este artículo, exploraremos yield return en C#, analizando su funcionalidad, casos de uso, y cómo puede transformar la forma en que abordas la iteración.

Understanding the Basics: Iteration in C#

La iteración es un concepto fundamental en programación, y C# ofrece varios mecanismos para lograrlo. Tradicionalmente, bucles como el for y el bucle foreach han sido las herramientas preferidas para iterar sobre colecciones. Sin embargo, C# introduce una solución más elegante con la palabra clave yield aplicada a la declaración return, y mediante el uso de la interfaz IEnumerable.

La eficiencia de la declaración yield return

En su núcleo, yield return es una declaración utilizada en el método iterador para proporcionar una forma más eficiente de generar una secuencia de valores. Te permite crear un iterador sin la necesidad de generar una colección completa en memoria, haciéndolo particularmente útil para conjuntos de datos grandes o secuencias infinitas.

Aquí hay un fragmento de código simple para ilustrar el uso básico de 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
        }
    }
}

En este ejemplo, el método GenerateNumbers utiliza yield return para producir una secuencia de números desde start hasta end. El iterador se evalúa de forma perezosa, lo que significa que cada número se genera según demanda durante la ejecución de la iteración.

Evaluación laxa y eficiencia

Una de las ventajas significativas de la declaración yield return es su capacidad para soportar la evaluación diferida. A diferencia de los métodos tradicionales que generan una colección completa antes de la iteración, yield return produce valores uno a uno. Esto puede llevar a ahorros significativos de memoria, especialmente al tratar con grandes conjuntos de datos.

Stateful Iteration: Manejo de escenarios complejos

La declaración yield return no se limita solo a generar secuencias simples; se destaca en el manejo de escenarios más complejos en el bloque iterador. Al mantener una máquina de estados a través de las iteraciones, puedes crear iteradores que recuerden su posición en la secuencia.

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
        }
    }
}

En este ejemplo, el método GenerateFibonacci utiliza yield return para crear una secuencia de números de Fibonacci. El estado se mantiene entre las iteraciones, asegurando la generación y salida eficiente de los números Fibonacci.

Construcción de secuencias infinitas

Una aplicación intrigante de yield return es su capacidad para crear secuencias infinitas de valores. Dado que los valores se generan sobre la marcha, puedes representar secuencias que se extienden para siempre sin consumir memoria infinita.

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
        }
    }
}

En este ejemplo, el método GenerateEvenNumbers crea un iterador para números pares, y puedes iterar sobre él según sea necesario. También puedes utilizar la declaración yield break junto con yield return para detener y salir del bucle, creando una iteración personalizada para el bucle.

Presentando IronPDF: Una Biblioteca de C# Poderosa

C# Yield Return (Cómo Funciona Para Desarrolladores): Figura 1 - Página web de IronPDF

IronPDF se destaca como una biblioteca versátil de C# diseñada para simplificar las complejidades de trabajar con PDFs. La característica principal de IronPDF es su Herramienta de Conversión de HTML a PDF, asegurando que los diseños y estilos se mantengan.

Instalación de IronPDF: Un comienzo rápido

Para incorporar IronPDF en tu proyecto de C#, puedes instalar rápidamente el paquete NuGet de IronPDF. Alternativamente, busca 'IronPDF' en NuGet y procede con la instalación.

PM > Install-Package IronPdf

Alternativamente, puedes localizar "IronPDF" en el Administrador de Paquetes NuGet e instalarlo desde allí.

Generación de PDF con IronPDF

Considera el siguiente ejemplo: Consideremos un ejemplo básico:

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");
    }
}

En el ejemplo anterior, IronPDF se usa para renderizar contenido HTML en un documento PDF, que luego se guarda en la ubicación especificada. Para obtener información más detallada, visita la documentación de IronPDF.

La Intersección de yield return e IronPDF

Ahora, vamos a explorar si la declaración yield return, una poderosa herramienta para la evaluación diferida y la iteración eficiente, puede integrarse sin problemas con IronPDF.

Considera un escenario donde necesitas generar un documento PDF con una lista de elementos utilizando yield return. Puedes aprovechar los beneficios de las declaraciones yield para generar contenido dinámicamente y luego emplear IronPDF para transformar ese contenido en un PDF. El siguiente fragmento de código genera un documento PDF con la ayuda de una declaración yield para agregar control dinámico sobre el contenido del 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");
    }
}

En este ejemplo, el método GenerateDynamicContent utiliza yield return para proporcionar una secuencia de elementos dinámicos. El contenido generado se incorpora luego en una estructura HTML y es utilizado por IronPDF para crear un documento PDF.

C# Yield Return (Cómo Funciona Para Desarrolladores): Figura 2 - Salida del PDF del código anterior

Conclusión

En conclusión, yield return es una característica poderosa y elegante en C# que transforma la forma en que abordas la iteración. Su capacidad para soportar evaluación perezosa, manejar escenarios complejos con iteración con estado y crear secuencias infinitas lo convierte en una herramienta valiosa en tu conjunto de programación. Ya sea que estés tratando con grandes conjuntos de datos o implementando algoritmos sofisticados, yield return te permite escribir un código más eficiente y expresivo.

Mientras yield return facilita la generación eficiente y a demanda de contenido, IronPDF interviene para convertir ese contenido sin problemas en documentos PDF profesionales. Ya sea que estés creando listas, informes u otros documentos de forma dinámica, esta sinergia te permite llevar tus capacidades de generación de documentos C# a nuevas alturas. ¡Abraza el potencial de este dúo dinámico, y haz que tus PDFs brillen con contenido dinámico y eficientemente generado!

IronPDF ofrece una prueba gratuita para probar su funcionalidad completa como en el modo comercial. Aprende más sobre las licencias de IronPDF comenzando desde $999.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

OR
bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronPDF"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargue el Instalador de Windows aquí.

  1. Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"

Licencias desde $999