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
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;
}
(Ya da ihmal) kullanmak için zaman var...
Python bir sözlük için anahtar Ekle?...
Bu ne anlama geliyor? &;'NSUnknow...
Nasıl bir JavaScript nesnesi için bir ...
Hangi keycode kaçmak için jQuery ile a...