Richtige Verwendung von "Rendite"

Den Rendite Schlüsselwort ist einer von denen, keywords in C#, weiter zu mystifizieren, mich, und noch nie war ich zuversichtlich, dass ich Sie mit es richtig.

Der folgenden zwei Stücke von code, die, wird Sie bevorzugt und warum?

Version 1: Mit yield return

public static IEnumerable<Product> GetAllProducts()
{
    using (AdventureWorksEntities db = new AdventureWorksEntities())
    {
        var products = from product in db.Product
                       select product;

        foreach (Product product in products)
        {
            yield return product;
        }
    }
}

Version 2: Zurückgeben der Liste

public static IEnumerable<Product> GetAllProducts()
{
    using (AdventureWorksEntities db = new AdventureWorksEntities())
    {
        var products = from product in db.Product
                       select product;

        return products.ToList<Product>();
    }
}
Kommentar zu dem Problem - Öffnen
Ertrag ist an " IEnumerable<T> und seine Art. Es ist in irgendwie lazy evaluation Kommentarautor: Jaider
hier ist eine große Antwort auf die ähnliche Frage. stackoverflow.com/questions/15381708/... Kommentarautor: Sanjeev Rai
Hier ist ein gutes Beispiel: stackoverflow.com/questions/3392612/... Kommentarautor: ValGe
Ich sehe ein gutes Beispiel für die Verwendung von Rendite, wenn der code iteriert durch die Ergebnisse von GetAllProducts() ermöglicht es dem Benutzer eine chance vorzeitig Abbrechen der Verarbeitung. Kommentarautor: JMD
Ich fand diesen thread sehr hilfreich: programmers.stackexchange.com/a/97350/148944 Kommentarautor: PiotrWolkowski

InformationsquelleAutor der Frage senfo | 2009-01-03

Schreibe einen Kommentar