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

  • circuschina

    circuschina

    16 Mart 2007
  • FRED

    FRED

    1 EKİM 2005
  • kindlechatmail

    kindlechatma

    25 AĞUSTOS 2010