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

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010
  • tseyina

    tseyina

    2 AĞUSTOS 2006