The Artima Developer Community
Sponsored Link

.NET Buzz Forum
C#: yield

0 replies.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a flat view of this topic  Flat View
Previous Topic   Next Topic
Threaded View: This topic has 0 replies on 1 page
-

Posts: 1524
Nickname: nitronic
Registered: Jul, 2006

Norbert Eder works as a software architect.
C#: yield Posted: Oct 29, 2007 2:37 AM
Reply to this message Reply

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


Topic: Aligning 3 Column DIV Previous Topic   Next Topic Topic: Technologieblogs aus Österreich

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use