Aldığı int parametre üzerinde çeşitli işlemler yapan ve elde ettiği sonucu geriye döndüren Hesapla() isminde bir method‘umuz var;
public int Hesapla(int Rakam) { ///parametre üzerinde gerçekleştirilen işlemler return Rakam; }</pre>
Hesapla() method’unu çağıran aşağıdaki YapilacakIsler1() method‘u olsun;
public IEnumerable<int> YapilacakIsler1(IEnumerable<int> Rakamlar) { var Sonuc = new List<int>(); foreach (var r in Rakamlar) { Sonuc.Add(Hesapla(r)); } return Sonuc; }
YapilacakIsler1() method’unu, yield anahtar kelimesini kullanarak, IEnumerable<T> tipinde değişken oluşturmaya gerek kalmayacak şekilde değiştirebiliriz;
public IEnumerable<int> YapilacakIsler2(IEnumerable<int> Rakamlar) { foreach (var r in Rakamlar) { yield return Hesapla(r); } }
Hatta, LINQ Expression yazarak IEnumerable<T> tipindeki listedenin tüm elemanlarını Hesapla() method’una parametre olarak gönderebiliriz;
public IEnumerable<int> YapilacakIsler3(IEnumerable<int> Rakamlar) { return Rakamlar.Select(r => Hesapla(r)); }
Son olarak, LINQ Select method’una Lambda Expression yerine, Hesapla() method’unu parametre olarak verebiliriz;
public IEnumerable<int> YapilacakIsler4(IEnumerable<int> Rakamlar) { return Rakamlar.Select(Hesapla); } Yukarıdaki sadeleştirme *devrimsel* bir yenilik olmasa da, kodun daha *derli-toplu* olmasını sağlayacaktır.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484