Maison >développement back-end >C++ >IEnumerable et IEnumerator en C# : comment activent-ils les boucles foreach et les itérateurs personnalisés ?
Compréhension approfondie de IEnumerable et IEnumerable : le mécanisme de base des itérateurs .NET
Dans la programmation .NET, l'implémentation de l'interface IEnumerable est la clé pour activer les boucles foreach. Bien que la syntaxe foreach soit concise et facile à utiliser, sa dépendance sous-jacente repose sur les interfaces IEnumerable et IEnumerator.
Scénarios d'application de IEnumerable et IEnumerable
IEnumerable n'est pas utilisé pour "remplacer" foreach au contraire, l'implémentation de IEnumerable est une condition préalable à l'utilisation de foreach ; Lorsque vous écrivez une boucle foreach, le compilateur la convertit en une série d'appels aux méthodes MoveNext et Current d'IEnumerator.
La différence entre IEnumerable et IEnumerable
Pourquoi avons-nous besoin d'IEnumerable et d'IEnumerator ?
implémente IEnumerable
Pour rendre une classe itérable, vous devez implémenter l'interface IEnumerable, ce qui nécessite d'implémenter la méthode GetEnumerator qui renvoie un IEnumerable.
Exemple
Considérez la classe d'objets personnalisés suivante qui implémente l'interface IEnumerable :
<code class="language-csharp">public class CustomCollection : IEnumerable<int> { private int[] data; public IEnumerator<int> GetEnumerator() { return new CustomEnumerator(data); } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } private class CustomEnumerator : IEnumerator<int> { // MoveNext 和 Current 方法用于遍历 data } }</code>
En implémentant IEnumerable et en fournissant un énumérateur personnalisé, vous pouvez désormais utiliser une boucle foreach pour parcourir les instances d'une CustomCollection.
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!