Je suis un développeur VB.Net, type de débutant en C#, Tout en regardant dans la documentation C# je suis venu par Iterators et les générateurs, ne pouvait pas entièrement comprendre l'utilisation, I là quelqu'un qui peut expliquer (dans vb perceptive, si possible)Quels sont C itérateurs et générateurs C#, et comment pourrais-je les utiliser
Répondre
Les itérateurs sont un moyen facile de générer une séquence d'articles, sans avoir à mettre en œuvre IEnumerable<T>
/IEnumerator<T>
vous-même. Un itérateur est une méthode qui renvoie un IEnumerable<T>
que vous pouvez énumérer dans une boucle foreach.
Voici un exemple simple:
public IEnumerable<string> GetNames()
{
yield return "Joe";
yield return "Jack";
yield return "Jane";
}
foreach(string name in GetNames())
{
Console.WriteLine(name);
}
Notez les déclarations yield return
: ces affirmations ne retourne pas en fait de la méthode, ils ont juste « pousser » l'élément suivant à celui qui est la lecture de la mise en œuvre.
Lorsque le compilateur rencontre un bloc itérateur, il récrit en fait à une machine d'état dans une classe qui implémente IEnumerable<T>
et IEnumerator<T>
. Chaque instruction yield return
dans l'itérateur correspond à un état dans cette machine d'état.
Voir this article par Jon Skeet pour plus de détails sur les itérateurs.
Il serait utile de voir un exemple de quand vous pourriez avoir besoin de faire cela. Votre exemple simple ici pourrait juste être remplacé par un tableau de chaînes, si le but est juste de permettre l'énumération sur "Joe" "Jack" et "Jane"? – MarkJ
Oui, cet exemple n'est pas très utile, vous pouvez facilement utiliser un tableau à la place. Pour des exemples plus utiles, voir [La série de Jon Skeet sur la réimplémentation de Linq aux objets] (http://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx);) –
Les itérateurs sont le plus souvent utilisés pour parcourir des listes de différents types. Les itérateurs sont appelés Enumérateurs dans .net. Une autre question concernant les itérateurs: http://stackoverflow.com/questions/1227283/why-do-we-need-iterators-in-c – jgauffin