AYUDA .NET

C# para cada uno (Cómo funcionan las TI para desarrolladores)

Kannaopat Udonpant
Kannapat Udonpant
16 de mayo, 2023
Compartir:

En este tutorial, trataremos el bucle "foreach" de C#, una herramienta esencial para los desarrolladores. El bucle foreach simplifica el proceso de iteración a través de una colección, facilitando la realización de operaciones sobre cada elemento sin preocuparse de los detalles subyacentes. Discutiremos la importancia de foreach, sus casos de uso y cómo implementarlo en tu código C#.

Introducción al bucle `foreach

El bucle foreach es una potente herramienta para que los desarrolladores iteren a través de colecciones de forma concisa y legible. Simplifica el código y reduce las posibilidades de error, ya que no es necesario gestionar manualmente el índice o el recuento de los elementos de la colección. En términos de declaraciones de variables, el bucle foreach tiene cinco declaraciones de variables, mientras que el bucle for sólo tiene tres declaraciones de variables.

Los casos de uso de foreach incluyen:

  • Suma de valores en una colección
  • Buscar un artículo en una colección
  • Modificar elementos de una colección
  • Realizar acciones en cada elemento de una colección

Comprender las colecciones

Existen diferentes tipos de colecciones en C# que se utilizan para almacenar un grupo de elementos en un único objeto. Se trata de matrices, listas, diccionarios, etc. El bucle foreach es una herramienta útil que se puede utilizar con cualquier colección que implemente la interfaz IEnumerable o IEnumerable.

Algunos tipos de recogida habituales son:

  • Matrices: Una colección de tamaño fijo de elementos con el mismo tipo de datos.
  • Listas: Una colección dinámica de elementos con el mismo tipo de datos.
  • Diccionarios: Una colección de pares clave-valor, donde cada clave es única.

    El espacio de nombres System.Collections.Generic contiene el método de extensión ForEach que puede utilizarse con cualquier clase de colección incorporada.

Implementación de la sentencia foreach en C#

Ahora que tenemos una comprensión básica de las colecciones y el bucle for each, vamos a sumergirnos en la sintaxis y ver cómo funciona en C#.

Sintaxis del bucle For Each


    foreach (variableType variableName in collection)
    {
        // Code to execute for each item
    }

    foreach (variableType variableName in collection)
    {
        // Code to execute for each item
    }

Aquí, variableType representa el tipo de datos de los elementos de la colección, variableName es el nombre dado al elemento actual en el bucle(variable de bucle)y collection se refiere a la colección sobre la que se quiere iterar.

Ejemplo

Consideremos un ejemplo en el que tenemos una lista de números enteros y queremos hallar la suma de todos los elementos de la lista.


    using System;
    using System.Collections.Generic;

            // Create a list of integers
            List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

            // Initialize a variable to store the sum
            int sum = 0;

            // Iterate through the list using for each loop
            foreach (int number in numbers)
            {
                sum += number;
            }

            // Print the sum
            Console.WriteLine("The sum of the elements is: " + sum);

    using System;
    using System.Collections.Generic;

            // Create a list of integers
            List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

            // Initialize a variable to store the sum
            int sum = 0;

            // Iterate through the list using for each loop
            foreach (int number in numbers)
            {
                sum += number;
            }

            // Print the sum
            Console.WriteLine("The sum of the elements is: " + sum);

Salida

Cuando el bucle se ejecuta, da la siguiente salida.


    The sum of the elements is: 15

    The sum of the elements is: 15

En el ejemplo anterior, primero creamos una lista de enteros llamada números e inicializamos una variable suma para almacenar la suma de los elementos. A continuación, utilizamos el bucle foreach para recorrer la lista y añadir el valor de cada elemento a la suma. Por último, imprimimos la suma en la consola. También podemos imprimir un array utilizando el bucle foreach de forma similar.

Variaciones y buenas prácticas

Ahora que tenemos una comprensión básica de cómo utilizar el bucle for each, vamos a discutir algunas variaciones y mejores prácticas.

Iteración de sólo lectura: El bucle for each es el más adecuado para la iteración de sólo lectura, ya que modificar la colección mientras se itera puede provocar resultados inesperados o errores en tiempo de ejecución. Si necesita modificar la colección durante la iteración, considere utilizar un bucle for tradicional o crear una nueva colección con las modificaciones deseadas.

Utilizar la palabra clave var: En lugar de especificar explícitamente el tipo de datos de los elementos de la colección, puedes utilizar la palabra clave var para dejar que el compilador infiera el tipo de datos. Esto puede hacer que el código sea más conciso y fácil de mantener.

Ejemplo:


    foreach (var number in numbers)
    {
        Console.WriteLine(number);
    }

    foreach (var number in numbers)
    {
        Console.WriteLine(number);
    }

**Cuando utilices un bucle for each para iterar a través de diccionarios, necesitarás trabajar con la estructura KeyValuePair. Esta estructura representa un par clave-valor en un diccionario.

Ejemplo:


    Dictionary<string, int> ageDictionary = new Dictionary<string, int>
    {
        { "Alice", 30 },
        { "Bob", 25 },
        { "Charlie", 22 }
    };

    foreach (KeyValuePair<string, int> entry in ageDictionary)
    {
        Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
    }

    Dictionary<string, int> ageDictionary = new Dictionary<string, int>
    {
        { "Alice", 30 },
        { "Bob", 25 },
        { "Charlie", 22 }
    };

    foreach (KeyValuePair<string, int> entry in ageDictionary)
    {
        Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
    }

LINQ y para cada uno: LINQ(Idioma Consulta integrada) es una potente función de C# que permite consultar y manipular datos de forma más declarativa. Puede utilizar LINQ con el bucle for each para crear un código más expresivo y eficiente.

Ejemplo:


    using System;
    using System.Collections.Generic;
    using System.Linq;
            List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

            // Use LINQ to filter out even numbers
            var evenNumbers = numbers.Where(n => n % 2 == 0);

            // Iterate through the even numbers using for each loop
            foreach (var number in evenNumbers)
            {
                Console.WriteLine(number);
            }

    using System;
    using System.Collections.Generic;
    using System.Linq;
            List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

            // Use LINQ to filter out even numbers
            var evenNumbers = numbers.Where(n => n % 2 == 0);

            // Iterate through the even numbers using for each loop
            foreach (var number in evenNumbers)
            {
                Console.WriteLine(number);
            }

Añadir funcionalidad IronPDF al tutorial de C# para cada uno

En esta sección, ampliaremos nuestro tutorial sobre el bucle "C# for each" presentando IronPDF, una popular biblioteca para trabajar con archivos PDF en C#. Demostraremos cómo utilizar el bucle foreach junto con IronPDF para generar un informe PDF basado en una colección de datos.

Presentación de IronPDF

Documentación de IronPDF es una potente biblioteca para crear, editar y extraer contenido de archivos PDF en C#. Proporciona una API fácil de usar para trabajar con documentos PDF, lo que la convierte en una opción excelente para los desarrolladores que necesitan incorporar funciones PDF a sus aplicaciones.

Algunas de las principales características de IronPDF son:

*Generación de PDF a partir de HTML, URL e imágenes

*Editar documentos PDF existentes

*Extraer texto e imágenes de PDF

*Añadir anotaciones, campos de formulario y cifrado a los PDF

Instalación de IronPDF

Para empezar a utilizar IronPDF, deberá instalar el paquete IronPDF NuGet. Para ello, siga las instrucciones deInstalación de IronPDF.

Generación de un informe PDF con IronPDF y para cada

En este ejemplo, utilizaremos la librería IronPDF y el bucle for each para crear un informe PDF de una lista de productos, incluyendo sus nombres y precios.

En primer lugar, vamos a crear una simple clase Producto para representar los productos:


    public class Product
    {
        public string Name { get; set; }
        public decimal Price { get; set; }

        public Product(string name, decimal price)
        {
            Name = name;
            Price = price;
        }
    }

    public class Product
    {
        public string Name { get; set; }
        public decimal Price { get; set; }

        public Product(string name, decimal price)
        {
            Name = name;
            Price = price;
        }
    }

A continuación, vamos a crear una lista de objetos Producto para generar el informe PDF:


    List<Product> products = new List<Product>
    {
        new Product("Product A", 29.99m),
        new Product("Product B", 49.99m),
        new Product("Product C", 19.99m),
    };

    List<Product> products = new List<Product>
    {
        new Product("Product A", 29.99m),
        new Product("Product B", 49.99m),
        new Product("Product C", 19.99m),
    };

Ahora, podemos utilizar IronPDF y el bucle for each para generar un informe PDF que contenga la información del producto:


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

    // Create a list of products
    List<Product> products = new List<Product>
    {
        new Product("Product A", 29.99m),
        new Product("Product B", 49.99m),
        new Product("Product C", 19.99m),
    };

    // Initialize an HTML string to store the report content
    string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";

    // Iterate through the list of products using for each loop
    foreach (var product in products)
    {
        // Add product information to the HTML report
        htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
    }

    // Close the table tag in the HTML report
    htmlReport += "</table>";

    // Create a new instance of the HtmlToPdf class
    var htmlToPdf = new ChromePdfRenderer();

    // Generate the PDF from the HTML report
    var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);

    // Save the PDF to a file
    PDF.SaveAs("ProductReport.PDF");

    // Inform the user that the PDF has been generated
    Console.WriteLine("ProductReport.PDF has been generated.");

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

    // Create a list of products
    List<Product> products = new List<Product>
    {
        new Product("Product A", 29.99m),
        new Product("Product B", 49.99m),
        new Product("Product C", 19.99m),
    };

    // Initialize an HTML string to store the report content
    string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";

    // Iterate through the list of products using for each loop
    foreach (var product in products)
    {
        // Add product information to the HTML report
        htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
    }

    // Close the table tag in the HTML report
    htmlReport += "</table>";

    // Create a new instance of the HtmlToPdf class
    var htmlToPdf = new ChromePdfRenderer();

    // Generate the PDF from the HTML report
    var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);

    // Save the PDF to a file
    PDF.SaveAs("ProductReport.PDF");

    // Inform the user that the PDF has been generated
    Console.WriteLine("ProductReport.PDF has been generated.");

C# For Each(Cómo funciona para los desarrolladores) Figura 1 - Resultado de salida

Conclusión

A lo largo de este tutorial, hemos explorado los fundamentos del bucle "for each" de C#, su importancia, casos de uso y cómo implementarlo en tu código. También presentamos IronPDF, una potente biblioteca para trabajar con archivos PDF en C#, y demostramos cómo utilizar el bucle for each junto con IronPDF para generar un informe PDF basado en una colección de datos.

Sigue aprendiendo y desarrollando tus habilidades, y pronto serás capaz de aprovechar todo el potencial del bucle for each y otras características de C# para crear aplicaciones robustas y eficientes. IronPDF ofrece un servicio deprueba gratuita para probar la biblioteca. Si decide comprarla, la licencia de IronPDF comienza a partir de $749.

Kannaopat Udonpant
Ingeniero de software
Antes de convertirse en ingeniero de software, Kannapat realizó un doctorado en Recursos Medioambientales en la Universidad de Hokkaido (Japón). Mientras cursaba su licenciatura, Kannapat también se convirtió en miembro del Laboratorio de Robótica Vehicular, que forma parte del Departamento de Ingeniería de Bioproducción. En 2022, aprovechó sus conocimientos de C# para unirse al equipo de ingeniería de Iron Software, donde se centra en IronPDF. Kannapat valora su trabajo porque aprende directamente del desarrollador que escribe la mayor parte del código utilizado en IronPDF. Además del aprendizaje entre iguales, Kannapat disfruta del aspecto social de trabajar en Iron Software. Cuando no está escribiendo código o documentación, Kannapat suele jugar con su PS5 o volver a ver The Last of Us.
< ANTERIOR
C# String Replace (Cómo funciona para desarrolladores)
SIGUIENTE >
Try/Catch en C# (Cómo funciona para desarrolladores)