-
Posts: 1524
Nickname: nitronic
Registered: Jul, 2006
|
Norbert Eder works as a software architect.
|
|
|
|
C#: yield
|
Posted: Oct 29, 2007 2:37 AM
|
|
|
This post originated from an RSS feed registered with .NET Buzz
by -.
|
Original Post: C#: yield
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
|
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET
|
|
Das Schlüsselwort yield gibt es bereits seit .NET 2.0. In freier Wildbahn trifft man es bis dato jedoch sehr selten an. Hier eine kleine Erklärung wofür yield gut ist.
yield wird in einem Iterator-Block verwendet, um für das zurückzulieferende Objekt einer Enumeration einen Wert zu liefern oder das Ende der Enumeration anzuzeigen.
Nehmen wir als Beispiel folgenden Block:
private IEnumerable<string[]> LoadFile(string delim, StreamReader sr)
{
while (sr.Peek() != -1)
yield return sr.ReadLine().Split(delim.ToCharArray());
}
Der Hintergrund dieser Methode ist, über alle Zeilen einer Datei zu iterieren. Dazu wird ausserhalb dieser Methode ein Objekt des Typs StreamReader instanziiert und der Methode zusammen mit einem Trennzeichen (in diesem Fall ideal für CVS-Dateien) übergeben. Als Ergebnis kann über die Datei wie durch eine Auflistung iteriert werden.
Mit folgender Methode könnte nun das jeweils erste Element einer jeden Zeile in einer CVS-Datei ausgegeben werden:
private void TestFunction()
{
StreamReader sr = new StreamReader("Test.cvs");
foreach (string[] s in LoadFile(";", sr))
{
Console.WriteLine(s[0]);
}
sr.Close();
}
Eine einfachere Variante dies zu bewerkstellingen gibt es wohl kaum ...
Read: C#: yield
|
|