Réponse : Les objets pouvant être parcourus par foreach doivent être des objets collection ou tableaux, du type implémentant le superinterface IEnumerator ou la méthode GetEnumerator déclarée Q: Mais quand j’utilise habituellement Foreach In, je l’utilise directement, et il n’y a aucun problème. Puis-je demander, pourquoi cela ? Si vous souhaitez implémenter le type d’interface super IEnumerator ou la méthode GetEnumerator déclarée comme posé dans la question, que devriez-vous faire ? Merci Réponse : Lors de l’utilisation de foreach in, nous utilisons généralement une classe de collection définie par le système (implémentant l’interface ICollection). Par exemple, arrayList, stringDictionary, array, etc. Ces éléments sont emballés par la plateforme et sont proches de la mise en œuvre de l’interface IEnumerator. Pour que la classe que vous écrivez puisse foreach en même temps, vous devez implémenter l’interface lors de l’écriture de la classe. Cela permet de traverser la perche par la suite. Par exemple, définissez une classe de personnes et implémentez l’interface IEnumerator. S’il existe un tableau People[] tempPeople, alors vous pouvez utiliser : foreach( p in tempPeople){ console.writeline(p.name) ; Cela élimine les difficultés liées à l’utilisation des boucles for. Quant à la façon d’implémenter l’interface Iemumerator. Vérifie simplement la MSDN. Vous pouvez aussi chercher un livre plus épais.
|