Maison > développement back-end > C++ > Quels types d'objets C# prennent en charge les boucles foreach et comment fonctionnent-ils ?

Quels types d'objets C# prennent en charge les boucles foreach et comment fonctionnent-ils ?

Susan Sarandon
Libérer: 2025-01-10 10:48:40
original
598 Les gens l'ont consulté

Which C# Object Types Support foreach Loops and How Do They Work?

boucle foreach en C#

Q : Quels types d'objets prennent en charge la boucle foreach ?

Réponse : L'utilisation principale de la boucle foreach nécessite une méthode MoveNext() qui renvoie un objet avec une méthode Current et une propriété GetEnumerator(). En termes simples, les types les plus courants sont ceux qui implémentent IEnumerable/IEnumerable<T>. Cela inclut les implémentations de ICollection/ICollection<T>, telles que Collection<T>, List<T>, les tableaux, etc.

Comment ça marche ?

Une foreach(int i in obj) {...} boucle de la forme foreach est essentiellement équivalente à :

<code class="language-csharp">var tmp = obj.GetEnumerator();
int i; // C# 4.0及之前版本
while(tmp.MoveNext()) {
    int i; // C# 5.0及之后版本
    i = tmp.Current;
    {...} // 你的代码
}</code>
Copier après la connexion
L'objet

IEnumerator (tmp) est utilisé pour parcourir les éléments de la collection et les affecter à la variable de boucle à chaque itération. Si l'enquêteur prend en charge la méthode Dispose(), elle est appelée comme si vous utilisiez l'instruction using.

Remarque : L'emplacement de la déclaration de variable de boucle "int i" diffère entre C# 4.0 et C# 5.0. C# 5.0 le déclare à l'intérieur de la boucle, tandis que C# 4.0 le déclare en dehors de la boucle. Cette distinction est importante lors de l'utilisation de variables de boucle dans des fermetures ou d'expressions lambda dans des boucles.

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!

source:php.cn
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