Etiketlenen Yazılarlambda expressions
C# 3.0 : Lambda İfadeleri
C# 3.0 ile gelen en büyük yeniliklerden biri Lambda İfadeleridir. Lambda ifadeleriyle temsilci tipi parametre alan metotları daha kısa bir biçimde yazabiliriz. Şimdi bu konuyu anlamak için C# 1.1, 2.0 ve 3.0 versiyonlarıyla yapacağım.
C# 1.1
List<int> listem = new List<int>();
listem.Add(1);
listem.Add(2);
listem.Add(3);
listem.Add(4);
listem.Add(5);
listem.Add(6);
Predicate<int> pre = new Predicate<int>(KararVer);
List<int> CiftSayi = listem.FindAll(pre);
foreach(int i in CiftSayi)
{
Console.WriteLine(i.ToString());
}
Console.ReadLine();
bool KararVer(int Deger)
{
return Deger % 2 == 0;
}
Gördüğünüz gibi çok uzun bir kod bloğu oluştu. İlk önce listem adında List<int> tipinde bir nesne oluşturduk. Bunun içine Add() metoduyla int tipinde değerler girdir. Daha sonra yine List<int> int tipinde bir tane daha nesne oluştursuk ve buna değer olarak listem.FindAll() metodunu atadık. Listem.FindAll metodu Predicate<T> tipinde bir temsilciyi parametre olarak alıyor. Oradaki Predicate<int>(KararVer) kısmı ile bool değer döndüren bir parametre alıyor. Bizde buraya bir tane KararVer isminde metodu gösterdik. Foreach döngüsüylede verileri ekranda gösterdik. Şimdi KararVer() metodumuza bakalım. KararVer metodu bool tipinde bir değer döndüren, int tipinde bir parametre alan metodumuz. Kod bloğunda ise Deger parametersinin 2’ye tam bölünüp bölünmediğini kontrol ettirerek geriye bool tipinde bir değer döndürüyoruz. Şimdi bunu C# 2.0 ile yapalım.
C# 2.0
List<int> listem = new List<int>();
listem.Add(1);
listem.Add(2);
listem.Add(3);
listem.Add(4);
listem.Add(5);
listem.Add(6);
List<int> CiftSayi = listem.FindAll(delegate(int deger) { return deger % 2 == 0;});
foreach(int i in CiftSayi)
{
Console.WriteLine(i.ToString());
}
Console.ReadLine();
Burada ise artık Predicate şablon sınıfında kurtulduk. FindAll metodunda ise C# 2.0 ile beraber gelen isimsiz metodları kullanarak çok basit bir biçimde geriye değer döndürdük. Şimdi ise C# 3.0 ile yapalım.
C# 3.0
List<int> listem = new List<int>();
listem.Add(1);
listem.Add(2);
listem.Add(3);
listem.Add(4);
listem.Add(5);
listem.Add(6);
List<int> CiftSayi = listem.FindAll(deger => deger % 2 == 0);
foreach(int i in CiftSayi)
{
Console.WriteLine(i.ToString());
}
Console.ReadLine();
Burada ise lambda(=>) ifadelerini kullanarak çok basit bir biçimde temsilci tanımlayarak geriye bool tipinde deger gönderen bir yapı oluşturduk.
Add comment 15 Temmuz 2008