Mantigi oldukca basit ama bazi projelerde, uygulamaya entegrasyonu sıkıntı çıkarabiliyor. Iste bu sıkıntıları gidermek için C# 2.0 ile birlikte gelen yield keywordu sayesinde bu islemlerin tumu bizim icin arka planda yapilmis olacak.
Kullanimi oldukca basit;
Yine ayni sekilde, UrunYonetim sinifini olusturup, IEnumerable sinifindan kalitalim ve GetEnumerator sinifini override edelim.
namespace yieldKullanimi
{
class UrunYonetim : IEnumerable
{
Urun[] _urunler;
public UrunYonetim()
{
_urunler = VeriTabanindanOku();
}
private Urun[] VeriTabanindanOku()
{
Urun[] urunler = { new Urun(1, "Monitor", 200), new Urun(2, "Klavye", 80), new Urun(3, "Mouse", 40) };
return urunler;
}
public IEnumerator GetEnumerator()
{
for (int i = 0; i < _urunler.Length; i++)
{
yield return _urunler[i].Ad;
}
}
}
}
Gordugunuz uzere, biz MoveNext,Reset ve Current gibi uyeler yazmamamiza ragmen, yield keywordu sayesinde, arka planda bunlarin yazildigini goruyoruz. Programimiza buyuk olcude rahatlik getiren, is yukunu azaltan ayni zamanda da kod okulurlugu acisindan profesyonel yapisini koruyan yield'lar sayesinde hayat artik daha da guzel. :)
* Resme tıklarsanız, yeni ekranda, orjinal boyutunda erişebilirsiniz.
1 yorum:
teşekkürler hocam
Yorum Gönder