igritco
9/27/2016 - 6:30 PM

Lambdas

Lambdas

Lambdas sunt strict legate de delegate si ofera un mod mai simplist de a scrie cod.

Sa presunpunem ca avem un delegate:
public delegate void AddSomething(int a, int b);

In cazul in care am dori sa cream o instanta a acestui delegat, am crea o metoda cu aceeasi semnatura,
de exemplu: 
void SomeMethod(int s, int b) 
{
  s=s+b;
}

dupa care am crea instanta de delegat:
AddSomething instanta = new AddSomething(SomeMethod);
instanta(2,2);

Cu lambdas am putea face asta mult mai usor si anume:
AddSomething instanta = (a,b)=> a=a+b;

Nu mai avem nevoie de metoda separata si trebuie doar sa folosim acelasi numar de parametri, in cazul nostru (a,b), iar compilerul isi va da seama de tipul parametrilor.

Un exemplu care ne-ar ajuta si mai mult e ala in care avem si evenimente.
Sa presupunem ca avem delegate-ul de mai sus si avem o clasa Worker care are un eveniment:
event AddSomething WorkInProgress;

In momentul in care vom crea o instanta noua a obiectului Worker, putem adauga metoda la evenimentul de WorkInProgress mult mai simplu:
Worker newWork = new Worker();
newWork.WorkInProgres+=(a,b)=>a=a+b;