SORU
2 EYLÜL 2008, Salı


Yield anahtar sözcüğü C için#?

How Can I Expose Only a Fragment of IList<> soru cevapları biri aşağıdaki kod parçası vardı:

IEnumerable<object> FilteredList()
{
    foreach( object item in FullList )
    {
        if( IsItemInPartialList( item )
            yield return item;
    }
}

Faiz sözcüğü ne var ne yok? Birkaç yerde geçmiş, ve bir soru daha görmüştüm ama tam olarak aslında ne yaptığını çözemedim. Düşünme anlamında verim için bir iş parçacığı başka verimli alışkınım, ama bunun konumuzla ne ilgisi görünmüyor.

CEVAP
2 EYLÜL 2008, Salı


Faiz sözcüğü aslında burada çok mu çok. İşlevi IEnumerable arabirimini uygulayan bir nesne döndürür. Eğer bir işlevi çağırmadan dosyalarda grup-ing bu nesne üzerinde işlevi yine bu kadar denir başlarsa "verim". Bu sözdizimsel şeker C tanıttı# 2.0. Önceki sürümlerde kendi IEnumerable ve IEnumerator nesneleri oluşturmak için böyle şeyler yapmak zorunda.

En kolay yolu bu işte bir örnek yazmak için bazı kesme noktası ayarlamak ve ne olacağını görmek gibi bir kodu anlamak.

Örneğin: bu atlama deneyin

public void Consumer()
{
    foreach(int i in Integers())
    {
        Console.WriteLine(i.ToString());
    }
}

public IEnumerable<int> Integers()
{
    yield return 1;
    yield return 2;
    yield return 4;
    yield return 8;
    yield return 16;
    yield return 16777216;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008