Puisque aucun des exemples ont été donnés, en voici un qui a été utile pour moi.
Un agent recenseur est un objet que vous obtenez lorsque vous appelez .GetEnumerator() sur une classe ou d'un type qui implémente l'interface IEnumerator. Lorsque cette interface est implémentée, vous avez créé tout le code nécessaire pour le compilor pour vous permettre d'utiliser foreach
de "itérer" sur votre collection.
Qui n'est pas le mot "itérer" confondu avec itérateur bien. À la fois l'agent Recenseur et l'itérateur permet de "itérer". L'énumération et l'itération sont essentiellement le même processus, mais sont mis en œuvre différemment. L'énumération des moyens que vous avez impleneted l'interface IEnumerator. L'itération signifie que vous avez créé l'itérateur de construire dans votre classe (illustré ci-dessous), et vous vous appelez foreach
sur votre classe, date à laquelle le compilor crée automatiquement l'agent recenseur fonctionnalité pour vous.
Notez également que vous n'avez pas à faire de squat avec votre agent recenseur. Vous pouvez appeler MyClass.GetEnumerator()
tout au long de la journée, et ne rien faire avec elle (exemple:
IEnumerator myEnumeratorThatIWillDoNothingWith = MyClass.GetEnumerator()
).
Notez aussi que votre itérateur construire dans votre classe uniquement vraiment utilisé lorsque vous êtes réellement l'utiliser, c'est à dire vous dites foreach
sur votre classe.
Voici un itérateur exemple à partir de msdn:
public class DaysOfTheWeek : System.Collections.IEnumerable
{
string[] days = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" };
//This is the iterator!!!
public System.Collections.IEnumerator GetEnumerator()
{
for (int i = 0; i < days.Length; i++)
{
yield return days[i];
}
}
}
class TestDaysOfTheWeek
{
static void Main()
{
// Create an instance of the collection class
DaysOfTheWeek week = new DaysOfTheWeek();
// Iterate with foreach - this is using the iterator!!! When the compiler
//detects your iterator, it will automatically generate the Current,
//MoveNext and Dispose methods of the IEnumerator or IEnumerator<T> interface
foreach (string day in week)
{
System.Console.Write(day + " ");
}
}
}
// Output: Sun Mon Tue Wed Thr Fri Sat