C# 3.0 : Lambda İfadeleri

15 Temmuz 2008

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.

Entry Filed under: C#.NET. Etiketler: , , , , .

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


del.icio.us Hesabım

Sayfalar

 

Temmuz 2008
M T W T F S S
     
 123456
78910111213
14151617181920
21222324252627
28293031  

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