Passer au contenu du pied de page
.NET AIDE

Pour chaque C# (Comment ça fonctionne pour les développeurs)

Dans ce tutoriel, nous allons couvrir la boucle foreach en C#, un outil essentiel pour les développeurs. La boucle foreach simplifie le processus d'itération à travers une collection, facilitant les opérations sur chaque élément sans se soucier des détails sous-jacents. Nous discuterons de l'importance de foreach, de ses cas d'utilisation, et de comment l'implémenter dans votre code C#.

Introduction à la boucle foreach

La boucle foreach est un outil puissant pour les développeurs qui permet d'itérer à travers des collections de manière concise et lisible. Elle simplifie le code et réduit les risques d'erreurs, car il n'est pas nécessaire de gérer manuellement l'index ou le nombre d'éléments de la collection. En termes de lisibilité et de simplicité, la boucle foreach est souvent préférée à la boucle traditionnelle for.

Les cas d'utilisation pour foreach incluent :

  • Additionner des valeurs dans une collection
  • Rechercher un élément dans une collection
  • Modifier des éléments dans une collection
  • Effectuer des actions sur chaque élément d'une collection

Comprendre les collections

Il existe différents types de collections en C# qui sont utilisés pour stocker un groupe d'éléments dans un seul objet. Celles-ci incluent les tableaux, les listes, les dictionnaires, et plus encore. La boucle foreach est un outil utile qui peut être utilisé avec n'importe quelle collection qui implémente l'interface IEnumerable ou IEnumerable<T>.

Quelques types de collections courants incluent :

  • Tableaux : une collection de taille fixe d'éléments du même type de données.
  • Listes : une collection dynamique d'éléments du même type de données.
  • Dictionnaires : une collection de paires clé-valeur, où chaque clé est unique.

L'espace de noms System.Collections.Generic contient différents types pour travailler avec les collections.

Implémentation de l'instruction foreach en C

Maintenant que nous avons une compréhension de base des collections et de la boucle foreach, plongeons dans la syntaxe et voyons comment elle fonctionne en C#.

Syntaxe de la boucle foreach

foreach (variableType variableName in collection)
{
    // Code to execute for each item
}
foreach (variableType variableName in collection)
{
    // Code to execute for each item
}
For Each variableName As variableType In collection
	' Code to execute for each item
Next variableName
$vbLabelText   $csharpLabel

Ici, variableType représente le type de données des éléments dans la collection, variableName est le nom donné à l'élément actuel dans la boucle (variable de boucle), et collection fait référence à la collection que vous souhaitez parcourir.

Exemple

Prenons l'exemple où nous avons une liste d'entiers, et nous voulons trouver la somme de tous les éléments de la liste.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 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 foreach 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;

class Program
{
    static void Main()
    {
        // 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 foreach loop
        foreach (int number in numbers)
        {
            sum += number;
        }

        // Print the sum
        Console.WriteLine("The sum of the elements is: " + sum);
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		' Create a list of integers
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}

		' Initialize a variable to store the sum
		Dim sum As Integer = 0

		' Iterate through the list using foreach loop
		For Each number As Integer In numbers
			sum += number
		Next number

		' Print the sum
		Console.WriteLine("The sum of the elements is: " & sum)
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie

Lorsque la boucle s'exécute, elle donne le résultat suivant.

The sum of the elements is: 15

Dans l'exemple ci-dessus, nous créons d'abord une liste d'entiers appelée numbers et initialisons une variable sum pour stocker la somme des éléments. Ensuite, nous utilisons la boucle foreach pour parcourir la liste et ajouter la valeur de chaque élément à la somme. Enfin, nous affichons la somme sur la console. Cette méthode peut également être adaptée pour imprimer ou exercer d'autres opérations sur des collections similaires.

Variations et meilleures pratiques

Maintenant que nous avons une compréhension de base de l'usage de la boucle foreach, discutons de quelques variations et meilleures pratiques.

Itération en lecture seule : La boucle foreach est la mieux adaptée pour l'itération en lecture seule, car modifier la collection pendant l'itération peut conduire à des résultats inattendus ou à des erreurs d'exécution. Si vous avez besoin de modifier la collection pendant l'itération, envisagez d'utiliser une boucle for traditionnelle ou de créer une nouvelle collection avec les modifications souhaitées.

Utilisation du mot clé var : Au lieu de spécifier explicitement le type de données des éléments dans la collection, vous pouvez utiliser le mot clé var pour laisser le compilateur déduire le type de données. Cela peut rendre le code plus concis et plus facile à maintenir.

Exemple :

foreach (var number in numbers)
{
    Console.WriteLine(number);
}
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
For Each number In numbers
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

Iterating through dictionaries: When using a foreach loop to iterate through dictionaries, you'll need to work with the KeyValuePair structure. Cette structure représente une paire clé-valeur dans un dictionnaire.

Exemple :

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.");
}
Dim ageDictionary As New Dictionary(Of String, Integer) From {
	{"Alice", 30},
	{"Bob", 25},
	{"Charlie", 22}
}

For Each entry As KeyValuePair(Of String, Integer) In ageDictionary
	Console.WriteLine($"{entry.Key} is {entry.Value} years old.")
Next entry
$vbLabelText   $csharpLabel

LINQ et foreach : LINQ (Language Integrated Query) est une fonctionnalité puissante en C# qui vous permet de requêter et de manipuler des données de manière plus déclarative. Vous pouvez utiliser LINQ avec la boucle foreach pour créer un code plus expressif et efficace.

Exemple :

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

class Program
{
    static void Main()
    {
        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 foreach loop
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        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 foreach loop
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Program
	Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}

		' Use LINQ to filter out even numbers
		Dim evenNumbers = numbers.Where(Function(n) n Mod 2 = 0)

		' Iterate through the even numbers using foreach loop
		For Each number In evenNumbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

Ajout de la fonctionnalité IronPDF au tutoriel C# foreach

Dans cette section, nous allons étendre notre tutoriel sur la boucle foreach en C# en introduisant IronPDF, une bibliothèque populaire pour travailler avec les fichiers PDF en C#. Nous allons démontrer comment utiliser la boucle foreach en conjonction avec IronPDF pour générer un rapport PDF basé sur une collection de données.

Présentation d'IronPDF

IronPDF est une bibliothèque puissante pour créer, modifier et extraire du contenu à partir de fichiers PDF en C#. Elle fournit une API facile à utiliser pour travailler avec des documents PDF, ce qui en fait un excellent choix pour les développeurs ayant besoin d'intégrer des fonctionnalités PDF dans leurs applications.

Quelques caractéristiques clés d'IronPDF incluent :

  • Génération de PDF à partir de HTML, d'URL et d'images
  • Modification de documents PDF existants
  • Extraction de texte et d'images à partir de PDF
  • Ajout d'annotations, de champs de formulaire et de chiffrement aux PDF

Installer IronPDF

Pour commencer avec IronPDF, vous devrez installer le package NuGet IronPDF. Vous pouvez le faire en suivant les instructions dans la documentation IronPDF.

Génération d'un rapport PDF avec IronPDF et foreach

Dans cet exemple, nous utiliserons la bibliothèque IronPDF et la boucle foreach pour créer un rapport PDF d'une liste de produits, incluant leurs noms et leurs prix.

Tout d'abord, créons une simple classe Product pour représenter les produits :

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;
    }
}
Public Class Product
	Public Property Name() As String
	Public Property Price() As Decimal

	Public Sub New(ByVal name As String, ByVal price As Decimal)
		Me.Name = name
		Me.Price = price
	End Sub
End Class
$vbLabelText   $csharpLabel

Ensuite, créons une liste d'objets Product pour générer le rapport 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),
};
Dim products As New List(Of Product) From {
	New Product("Product A", 29.99D),
	New Product("Product B", 49.99D),
	New Product("Product C", 19.99D)
}
$vbLabelText   $csharpLabel

Maintenant, nous pouvons utiliser IronPDF et la boucle foreach pour générer un rapport PDF contenant les informations sur les produits :

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

class Program
{
    static void Main()
    {
        // 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 foreach 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;

class Program
{
    static void Main()
    {
        // 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 foreach 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.");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Create a list of products
		Dim products As New List(Of Product) From {
			New Product("Product A", 29.99D),
			New Product("Product B", 49.99D),
			New Product("Product C", 19.99D)
		}

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

		' Iterate through the list of products using foreach loop
		For Each product In products
			' Add product information to the HTML report
			htmlReport &= $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>"
		Next product

		' Close the table tag in the HTML report
		htmlReport &= "</table>"

		' Create a new instance of the HtmlToPdf class
		Dim htmlToPdf = New ChromePdfRenderer()

		' Generate the PDF from the HTML report
		Dim 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.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Boucle For Each en C# (Comment ça fonctionne pour les développeurs) Figure 1 - Résultat

Conclusion

Tout au long de ce tutoriel, nous avons exploré les bases de la boucle foreach en C#, son importance, ses cas d'utilisation, et comment l'implémenter dans votre code. Nous avons également introduit IronPDF, une bibliothèque puissante pour travailler avec les fichiers PDF en C#, et démontré comment utiliser la boucle foreach en conjonction avec IronPDF pour générer un rapport PDF basé sur une collection de données.

Continuez d'apprendre et de développer vos compétences, et vous serez bientôt capable d'exploiter tout le potentiel de la boucle foreach et d'autres fonctionnalités C# pour créer des applications robustes et efficaces. IronPDF offre un essai gratuit pour tester la bibliothèque. Si vous décidez de l'acheter, la licence IronPDF commence à partir de $799.

Questions Fréquemment Posées

Qu'est-ce que la boucle foreach en C# ?

La boucle foreach en C# est une construction de programmation qui simplifie le processus d'itération à travers des collections comme les tableaux, les listes et les dictionnaires. Elle permet aux développeurs d'effectuer des opérations sur chaque élément d'une collection de manière concise et lisible sans gérer les indices ou les comptes.

Comment pouvez-vous créer un rapport PDF en utilisant la boucle foreach en C# ?

Vous pouvez utiliser la boucle foreach en combinaison avec IronPDF pour générer des rapports PDF. En itérant à travers une collection de données, comme une liste de produits, vous pouvez créer dynamiquement une chaîne de rapport HTML et la convertir ensuite en PDF en utilisant le ChromePdfRenderer d'IronPDF.

Quels sont les cas d'utilisation de la boucle foreach en C# ?

Les cas d'utilisation courants de la boucle foreach incluent la sommation des valeurs d'une collection, la recherche d'un élément, la modification des éléments, et l'exécution d'actions sur chaque élément d'une collection.

Quelle est la différence entre la boucle foreach et la boucle for en C# ?

La boucle foreach est préférée pour sa lisibilité et sa simplicité. Contrairement à la boucle for, elle ne nécessite pas la gestion manuelle de l'index ou du nombre de la collection. La boucle foreach est mieux utilisée pour les itérations en lecture seule.

Comment utiliser le mot-clé var avec la boucle foreach ?

Vous pouvez utiliser le mot-clé var dans la boucle foreach pour laisser le compilateur inférer le type de données des éléments dans la collection, rendant le code plus concis et plus facile à maintenir.

Pouvez-vous modifier une collection en utilisant une boucle foreach ?

La boucle foreach n'est pas adaptée à la modification d'une collection pendant l'itération en raison de l'éventualité d'erreurs d'exécution. Si la modification est nécessaire, envisagez d'utiliser une boucle for ou de créer une nouvelle collection modifiée.

Comment pouvez-vous gérer les itérations de dictionnaire en utilisant la boucle foreach en C# ?

En C#, vous pouvez itérer à travers des dictionnaires en utilisant la boucle foreach en utilisant la structure KeyValuePair pour accéder efficacement aux clés et aux valeurs.

Quels types de collections la boucle foreach peut-elle itérer ?

La boucle foreach peut itérer à travers toute collection qui implémente l'interface IEnumerable ou IEnumerable. Cela inclut les tableaux, les listes, les dictionnaires, et d'autres types de collections en C#.

Quelle est la syntaxe de la boucle foreach en C# ?

La syntaxe de la boucle foreach en C# est : foreach (variableType variableName in collection) { // Code à exécuter pour chaque élément } où variableType est le type de données, variableName est la variable de boucle, et collection est la collection à itérer.

Comment installer une bibliothèque PDF dans un projet C# ?

IronPDF peut être installé dans un projet C# en ajoutant le package NuGet IronPDF. Les instructions d'installation sont disponibles dans la documentation d'IronPDF.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite