yield anahtar kelimesi
yield return ile yineleyici metot yazmayı öğrenirsin.
yield return ile iteratör
Bir metotta yield return yazınca o metot iteratör metoda dönüşür. Her yield return bir değer üretir ve yürütmeyi duraklatır; çağıran bir sonraki değeri isteyince yürütmeye kaldığı yerden devam eder.
Bu, tüm diziyi belleğe yüklemeden eleman üretmenin yoludur. Dönüş türü IEnumerable<T> olur. Derleyici arka planda bir IEnumerator sınıfı üretir; elle yazmana gerek kalmaz.
Tembel değerlendirme
yield return ile yazılan metot tembel (lazy) çalışır. Çağırdığında gövde hemen çalışmaz; dönüş değeri üzerinde foreach başlayınca ilk yield return'a kadar ilerler.
Bu sayede sonsuz diziler bile yazılabilir. while (true) yield return ... döngüsü çağıran durana kadar değer üretir. Ayrıca büyük veri kaynakları parça parça işlenebilir; tüm veriyi beklemek gerekmez.
Uygulama yield ile sayı üret
Bir Numbers() metodu yaz: dönüş türü IEnumerable<int> olsun ve yield return ile 1, 2, 3 üretsin. Main içinde foreach ile her elemanı yazdır.
Örnek çözümü göster
Numbers() metodunu IEnumerable<int> dönecek şekilde yaz, içine yield return 1; yield return 2; yield return 3; koy. Main'de foreach (var n in Numbers()) ile gez.
Örnek çözüm:
using System;
using System.Collections.Generic;
class Program
{
static IEnumerable<int> Numbers()
{
yield return 1;
yield return 2;
yield return 3;
}
static void Main()
{
foreach (var n in Numbers())
{
Console.WriteLine(n);
}
}
}
Kendini test et
-
yield biçimini davranışa eşle
- yield return
- Tek değer üret
- yield break
- Yinelemeyi bitir
- return List<T>
- Tüm listeyi ver
- foreach
- İteratörü tüket
-
yield deyimini tamamla
yield____1;Cevabı göster
yieldreturn1; -
yield return ne yapar?
- Metodu hemen çalıştırır
- Tüm diziyi belleğe yükler
- Değer üretir ve duraklatır
- Hata fırlatır
Cevabı göster
Değer üretir ve duraklatır — Doğru. yield return bir değer üretir ve yürütmeyi duraklatır.