Maison > développement back-end > C++ > Comment le mot clé C# « rendement » simplifie-t-il l'itération impérative ?

Comment le mot clé C# « rendement » simplifie-t-il l'itération impérative ?

Susan Sarandon
Libérer: 2025-01-27 17:31:10
original
349 Les gens l'ont consulté

How Does the C# `yield` Keyword Simplify Imperative Iteration?

Comprendre C # 'S yield Mot-clé pour une itération efficace

introduit en C # 2.0, le mot clé yield rationalise considérablement l'itération impérative. Considérez cet exemple, illustrant son utilisation dans la création d'un IEnumerable<T>:

IEnumerable<object> FilteredList()
{
    foreach(object item in FullList)
    {
        if(IsItemInPartialList(item))
            yield return item;
    }
}
Copier après la connexion

Cette fonction ne construit pas de liste complète en mémoire. Au lieu de cela, il renvoie un itérateur. Chaque fois que la boucle foreach dans le code d'appel demande l'élément suivant, la fonction FilteredList() reprend l'exécution d'où elle s'était arrêtée, évaluant le prochain item et le renvoyant uniquement si la condition est remplie.

Examinons un exemple plus simple:

public void Consumer()
{
    foreach(int i in Integers())
    {
        Console.WriteLine(i);
    }
}

public IEnumerable<int> Integers()
{
    yield return 1;
    yield return 2;
    yield return 4;
    yield return 8;
    yield return 16;
    yield return 16777216;
}
Copier après la connexion

Le débogage de ce code révèle que Integers() ne s'exécute pas complètement en même temps. Il s'exécute uniquement jusqu'à ce qu'il atteigne un yield return, renvoyant une seule valeur. La prochaine itération de la boucle foreach dans Consumer() fait reprendre Integers(), en continuant à partir du prochain yield return.

Avantages clés de l'utilisation yield:

  • itération simplifiée: Évite la mise en œuvre manuelle de IEnumerable et IEnumerator, ce qui entraîne un code plus propre et plus concis.
  • Efficacité de la mémoire: Les valeurs sont générées à la demande, minimisant l'utilisation de la mémoire, en particulier bénéfique lorsqu'ils traitent de grands ensembles de données.
  • Amélioration de la lisibilité: L'intention du code devient plus claire, en particulier lors de la gestion des processus itératifs et du streaming des données. La logique pour générer la séquence est directement intégrée dans la méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal