SORU
6 Temmuz 2009, PAZARTESİ


Verim kullanmanın avantajı/amaç C kullanımına dönmek nedir#?

Bir C iç yield return x; kullanarak gördüğüm tüm# yöntem sadece tüm listeyi döndürerek aynı şekilde yapılabilir. Bu durumda, liste, iade vs yield return sözdizimini kullanarak herhangi bir yararı veya avantajı var mı?

Ayrıca, ne tür senaryolar yield return sadece tam listesini iade edemeyeceği kullanılacaktır?

CEVAP
6 Temmuz 2009, PAZARTESİ


Ama eğer bir koleksiyon kendinizi bina olsaydın?

Genel olarak kullanımına için kullanılabilirtembel nesneleri bir dizi oluşturmak. Örneğin Enumerable.Range toplama yöntemi her türlü DAHİLİ olarak sahip değil. Sadece bir sonraki sayıyı oluştururtalep üzerine. Bu tembel sırası nesil devlet bir makine kullanarak bir çok faydası vardır. Çoğu kapsamındadırfonksiyonel programlama kavramları.

Eğer sadece bir koleksiyonu ile sıralamak için bir yol olarak kullanımına bakıyorsun eğer benim görüşüme göre, basit kullanım durumları biri), yanlış yöne gidiyorsun. Dediğim gibi, kullanımına dönen diziler için anlamına gelir. Sırası bile olabilirsonsuz. Sonsuz uzunlukta bir liste dönmek ve ilk 100 öğeleri kullanmak için yolu yok artık.vardırbazen tembel olmak.Bir koleksiyon döndüren bir koleksiyon jeneratör dönen oldukça farklıbir yineleyici ne olduğu). Portakal elma karşılaştırma.

Farazi bir örnek:

static IEnumerable<int> GetPrimeNumbers() {
   for (int num = 2; ;   num) 
       if (IsPrime(num))
           yield return num;
}

static void Main() { 
   foreach (var i in GetPrimeNumbers()) 
       if (i < 10000)
           Console.WriteLine(i);
       else
           break;
}

Bu örnek az 10000 daha asal sayıları yazdırır. Kolayca bir milyon daha az hiç algoritması baskı sayıları değiştirebilirsiniz. Bu örnekte, sıra sonsuz olduğu için asal sayı listesi iade edemezsin ve tüketici bile kaç baştan istediğini bilmiyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • pjtoohot

    pjtoohot

    15 NİSAN 2008