27 Temmuz 2010 Salı

Lambda Operatoru

C# 3.0 yeniliklerinden biri de lambda operatorudur. Lambda operatorunun aslinda spesifik bir gorevi yoktur. Sadece anonim metot yazarken kullandigimiz komutlarin bazilarini bize kullandirmadan daha basit ve islevsel bir kodlama imkani sunar. Anonim metotlari, biz LINQ'da kullanacagimizdan bazen gercekten cok uzun kodlamalarla karsi karsiya kalabiliriz. Bu durum kodun okunulurlugunu ve ileride yapilacak olan bir degisiklikte kodlamanin bozulmadan degisiklik yapilmasini zorlastiracagindan lambda operatoru sayesinde bu dert ortadan kalkmis olacak. Simdi kisaca nasil kullanildigini ve eski uzun kodlamalari nasil kisalttigini kisaca ornek uzerinden anlamaya calisalim.

delegate void Temsilci(int a);
delegate int IslemHandler(int a,int b);

Temsilci t = delegate(int a)
{
Console.WriteLine(a * a);
};

Bunu lambda operatoru ile yazarsak;

Temsilci t2 = (int a) =>
{
Console.WriteLine(a*a);
};
Lambda kolayliklarindan faydalanmadik henuz.
Lambda ile kisaca yazmak istersek;

Temsilci t3 = a =>
Console.WriteLine(a * a);

Lambda operatoru ile yapilan kisaltmalarda su maddeler dikkate alinir:
  • Parametrelerin tiplerini soylememize gerek yok delegeden biliyo imzasini.
  • Tek parametre varsa parantezlere gerek yok.
  • Metodun icinde tek satir kod varsa suslu parantezlere de gerek yok.
Lambda operatorunu geri deger donen anonim metotlarda da kullanabiliriz;

IslemHandler islem = (int a, int b) =>
{
return a + b;
};
veya daha kisa yazarsak

IslemHandler islem2 = (a, b) => a + b;

delege baglama olayi da su sekilde gerceklesiyor.

islem2 += (a, b) => a * b;

0 yorum: