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
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.
Doğru kullanımı Android kullanıcısı Yö...
IDisposable arabirimi doğru kullanımı...
Tüm sonra, doğru geri Parçaları örnek ...
Nasıl doğru erişim için `` / bu içeriğ...
Doğru "bu" bağlam setTimeout...