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

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • TotalxLuna

    TotalxLuna

    27 Kasım 2011