SORU
3 Ocak 2009, CUMARTESİ


Kapasiteli geri doğru Kullanımı

yield anahtar kelime bu C keywords biri * daima beni şaşırtmaya devam ediyor ve hiçbir zaman doğru kullanıyor muyum emin olamadım.

Ve neden? bu tercih edilen kod aşağıdaki iki parçadan

Sürüm 1:Kapasiteli geri kullanarak

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;
        }
    }
}

2. SürümListe döndürür

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

        return products.ToList<Product>();
    }
}

CEVAP
3 Ocak 2009, CUMARTESİ


Ben listenin (ya da bir sonraki eşya grubu) diğer öğe hesapladığınızda verim-dönüş kullanmak eğilimindedir.

Sürüm 2, gerekir kullanarak dönmeden önce tam bir listesi var. Verim-geri kullanarak, gerçekten sadece dönmeden önce bir sonraki madde olması gerekir.

Diğer şeyler arasında, bu daha geniş bir zaman çerçevesi içinde karmaşık hesaplamalar hesaplama maliyet yayılmasına yardımcı olur. Liste GUI bağladım ve kullanıcı asla son sayfaya gider, örneğin, hiç listede son öğe hesaplamak.

Verim-dönüş tercih edilebilir olduğu bir diğer dava ise IEnumerable sonsuz bir kümesini temsil eder. Asal Sayılar, ya da rasgele sayılar sonsuz bir liste düşünün. Asla tam IEnumerable derhal iade edebilirsiniz,-hem de sonuç listesi aşamalı olarak geri dönmek için kullanın.

Belirli bir örnekte, Ürünlerin tam listesi vardır, Sürüm 2 kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009