Etiketlenen Yazılarlambda

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


del.icio.us Hesabım

Sayfalar

 

Kasım 2009
M T W T F S S
« Jul    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Arşiv

Meta

Son Yazılar

Etiketler

C# c# 3. c# 3.0 lambda lambda expressions lambda ifadeleri linq var

Kategoriler

Son Yorumlar

Blog İstatistikleri

En Fazla Tıklananlar

Popüler Yazılar

Yazarlar

Twitter

Twitter