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