Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Iterators in C# are probably one of the least understood and most wonderful features the language has. They were added in C# 2.0 and are the magic that gives LINQ its Deferred Execution goodness. Anyway, I was needing an arbitrary length list of Guids today (although, with the recent shortage, perhaps ScottGuIDs would have been a better choice) and used this cute little few-liner to get what I wanted:
public IEnumerable<Guid> Guids
{
get
{
while (true)
{
yield return Guid.NewGuid();
}
}
}
From there you can easily get yourself a list of, say, 5 Guids using LINQ’s Take Extension Method:
var myGuids = this.Guids.Take(5);
Obviously, this made me want to generate some more interesting sequences, like Fibonnaci’s:
public IEnumerable<int> Fibonnaci
{
get
{
int first = 0;
yield return first;
int second = 1;
yield return second;
while (true)
{
int next = first + second;
first = second;
second = next;
yield return next;
}
}
}
Pretty terse, right?