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

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011