Y a-t-il une bonne ressource qui explique le concept d'énumérateurs et d'énumérateurs personnalisés? Particulièrement avec un bon exemple solide de la raison pour laquelle vous voudriez mettre en œuvre Je rencontre occasionnellement iEnumerable code> vous et comment vous l'utiliseriez efficacement? P>
rendement code> et j'essaie de mieux comprendre. P>
5 Réponses :
L'exemple le plus facile: usage: p> Pour le voir en action, placez un point d'arrêt de débogueur sur toutes les lignes du getNames code> méthode. p> p>
Cela a du sens, mais pouvez-vous expliquer comment la méthode de compte () fonctionne? Est-ce que cela force l'énumérateur à parcourir tous les résultats pour les compter? En outre, pourquoi certains code ont-ils une «pause-rendement»?
Pause de rendement CODE> dit essentiellement "Arrêt, plus d'éléments". Et oui,
comptez () code> (pas
compte code> ou
longueur code>) itérale toute la collection s'il n'a pas de raccourci (par exemple,
Comptez code> et
longueur code>).
merci Lappie! Ça commence à avoir un sens maintenant, mais que voulez-vous dire par raccourci?
Le type sous-jacent du ienumerable code> peut être une liste
ou un tableau code> ou un tableau code> ou un
hashtable code>, tout ce qui a une propriété déterminer la longueur / le nombre sans avoir à traverser toute la collection.
getNames (). ellementat (4) code> a-t-il goin 'on.
Un bon exemple peut être trouvé sur la page MSDN pour IEnumerable . P>
Vous voudrez peut-être donner un lien anglais :)
Je pensais avoir commuté ma culture à en-nous ... Thx!
Malheureusement, cet échantillon ne couvre pas le rendement, ce qui est probablement la vraie source de confusion.
Le meilleur exemple et la référence que j'ai trouvée est en fait dans le livre C # en profondeur em> Book du Skeet Jon Tout-Puissant. Ce n'est pas trop coûteux et ça vaut le coup pour tout ce que vous allez apprendre sur C #. P>
Notez que c'est le chapitre 6 de la 1ère édition, qui était (et probablement toujours) l'un des chapitres d'échantillonnage libres.
Demandez à un lien: manning-source.com/books/skeet/chapter6sample.pdf < / a>
@Martinho: Malheureusement, le lien direct ne fonctionne pas. Vous devez passer par Manning.com/skeet Premièrement, je soupçonne qu'il vérifie le référentiel. Mais oui, c'est toujours libre :)
Un autre livre que j'ai trouvé assez utile lorsque j'apprendais à propos d'Ienumerable et Ienumerator est le livre Pro C # 2008 de Troelsen. Il explique ce que les interfaces contiennent et comment construire des itérateurs avec le mot-clé "Rendement". P>
J'espère que cette aide. P>
Voici quelques ressources supplémentaires pour après avoir obtenu les bases. P>
WES a un excellent article sur les caractéristiques de performance des itérateurs: P>
http: //blogs.msdn .Com / Wesdyer / Archive / 2007/03/23 / Tous points-itérators.aspx P>
Si vous avez des questions sur pourquoi il y a tellement de restrictions étranges sur ce que vous pouvez faire dans un bloc Itérateur, voici ma série de sept parties sur ce qui a motivé les règles inhabituelles: P>
http://blogs.msdn.com/ericlippert/archive /tags/iterators/default.aspx P>
@SLC attends la réponse de Jon Skeet ....
@leppie qu'est-ce que ça veut dire?
@Leppie Gotcha, il dit indifférent ... Je n'ai jamais voulu dire que votre réponse était indifférente à cette question ...
@Pandiya Chendeur: Il semble que vous attendiez que Jon réponde à toutes les questions ... Vous ne devriez pas vous attendre à rien surtout si c'est gratuit.