foreach peut parcourir certains types de données. Comme le montre la figure, le type de données parcouru doit avoir la méthode publique GetEnumerator.
Lors de l'utilisation du parcours foreach, le type d'inférence var est impliqué. Si la version générique n'est pas implémentée à ce moment, ce sera toujours le type objet.
Le parcours Foreach ne peut que lire les données, mais ne peut pas modifier les données. Il peut être détecté par une chaîne. La chaîne est traversable, mais le caractère qui la compose ne peut pas être modifié. (Uniquement dans ce scénario).
foreach se déplace uniquement vers l'avant, en lisant un par un, similaire à la méthode Read de DataReader qui exploite la base de données.
D'après l'analyse ci-dessus, on peut voir que la méthode IEnumerator doit être définie à l'intérieur de la classe pour pouvoir être parcourue. Il y a deux solutions ici.
Méthode 1 : utilisez l'expression de retour rendement
yield ; si la valeur de retour est IEnumerable
Si la valeur de retour est IEnumerator
Vous pouvez l'utiliser pour obtenir la valeur du tableau de personnes dans l'image ci-dessus lors de la traversée.
Méthode 2 En implémentant l'interface IEnumerable
IEunmerable inclut la méthode GetEunmetator et la valeur de retour est le type d'IEnumerator.
À l'heure actuelle, une autre classe est nécessaire pour hériter de l'interface IEnumerator, afin que sa sous-classe puisse être renvoyée pour atteindre l'objectif.
Processus d'implémentation :
1. Une variable de type int doit être ajoutée pour marquer la position de l'index. Utilisez int position=-1 ici.
2. Ajoutez la variable de tableau correspondante pour recevoir le tableau transmis. Ici string[] persion;
3. L'attribut Curren implémenté doit renvoyer les données de l'index actuel. return person[position];
4. Pour implémenter la méthode MoveNext, vous devez ajouter 1 au pointeur (index) et avancer. La valeur de retour est un type bool, qui est utilisé pour déterminer si le. l'index a été exploité.
5. Implémentez la méthode Reset, qui est la méthode de réinitialisation, et attribuez la position à -1 ;
6. Ajoutez un constructeur avec des paramètres pour recevoir les données transmises.
3. Analyse de la collection List
On peut voir à partir de l'outil de réflexion que la méthode Add de la List la collection consiste à ajouter des éléments internes Ajoutez une valeur, et cet élément est un tableau. Parce qu'il est générique, il est affiché sous la forme T.
Autrement dit, il existe une telle variable à l'intérieur de la collection pour stocker les données ajoutées, tout comme le tableau défini ci-dessus, de cette façon, la classe de collection List est personnalisée avec ce qui précède
Le. les classes sont cohérentes. La définition ci-dessus sert simplement à démontrer le processus. Bien sûr, en raison des besoins de l'entreprise, vous pouvez implémenter et étendre vous-même les classes ci-dessus, par exemple en modifiant les données statiques
en méthode Add pour les ajouter. et filtrer les données, la logique, etc., peut être étendue en fonction des besoins de l'entreprise.
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!