Maison >développement back-end >C++ >Comment le mot clé C# « rendement » simplifie-t-il l'itération impérative ?
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>
:
<code class="language-csharp">IEnumerable<object> FilteredList() { foreach(object item in FullList) { if(IsItemInPartialList(item)) yield return item; } }</code>
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:
<code class="language-csharp">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; }</code>
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
:
IEnumerable
et IEnumerator
, ce qui entraîne un code plus propre et plus concis. 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!