Bütün gün, dizilerde filtrelemeler yaptıktan sonra, bu konu ile ilgili bir yazı yazmaya karar verdim. Elimizde bir List<int> olsun, dizideki 0‘dan büyük rakamları döndüren fonksiyon yazmak istediğimizi varsayalım;
Önce Kötü Yol;
private static List<int> FiltrelemeninKotuYolu(List<int> t) { List<int> arrReturn = new List<int>(); foreach (int i in t) { if (i > 0) { arrReturn.Add(i); } } return arrReturn; }</pre> Umarım artık böyle kodlar yazmıyorsunuzdur!!..
Çirkin Yol;
Önce bir Predicate Function tanımlarız;
private static bool Karsilastir(int i) { if (i > 0) { return true; } return false; }
Sonra, Predicate Function‘ı kullanırız;
private static List<int> FiltrelemeninCirkinYolu(List<int> t) { Predicate<int> pred = new Predicate<int>(Karsilastir); return t.FindAll(pred); }
Kötü Yol‘dan daha doğru olduğu ortada, ama Güzel bir yol değil.
Son olarak İyi Yol;
private static List<int> FiltrelemeninIyiYolu(List<int> t) { return t.FindAll(n => n > 0); } **İyi Yol** aslında sadece **Çirkin Yol**'un iyileştirilmiş hali. *Predicate Method* kullanacağımıza *Lambda Expression* kullanıyoruz. *n => n > 0* : **n**'nin **0**'dan büyük olduğu durumlar anlamına geliyor.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484