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

  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009
  • RD

    RD

    19 NİSAN 2006
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013