Deoarece C # 3.0, disponibil nouă sintaxă delegatilor implementare a codului de destinație, numite expresii lambda (expresie lambda). expresii Lambda poate fi folosit ori de câte ori există un parametru de tip delegat.
Sintaxa pentru expresii lambda metode anonime sintaxă mai simplă. În cazul în care apelul a fi metoda are parametri, iar acești parametri nu sunt necesare, metode anonime sintaxă mai ușor, pentru că în acest caz, setările nu vor trebui să-l specificați.
Toate expresiile lambda utiliza noul operator lambda =>, care împarte o expresie lambda în două părți. În partea stângă indică un parametru de intrare (sau mai mulți parametri), iar în partea dreaptă - corpul expresiei lambda. => Operator descris uneori prin cuvinte, cum ar fi „switch“ sau „devine“.
C # acceptă două versiuni de expresii lambda, în funcție de corpul lambda. Deci, în cazul în care corpul expresiei lambda este o expresie unică, apoi o singură expresie lambda. În acest caz, corpul de expresie este inclus între paranteze buclat. Dacă corpul expresiei lambda constă operatorilor închise în paranteze cu rubrica, apoi o expresie bloc lambda. În același timp bloc expresia lambda poate conține un număr de operatori, inclusiv bucle, apeluri de metode, și declarații condiționate, în cazul. Ambele tipuri de expresii lambda sunt discutate mai târziu separat.
expresie unică lambda
La o parte unică expresie lambda situată la dreapta a => concesionarul acționează pe parametrul (sau un set de parametri) indică stânga. Returnează valoarea unei astfel de expresie este rezultatul operatorului lambda. Mai jos este forma generală a unei singure lambda expresie care are un singur parametru:
Dacă doriți să specificați câțiva parametri, se utilizează formularul de mai jos:
Astfel, atunci când doriți să specificați doi parametri sau mai multe, acestea trebuie să fie închise în paranteze. În cazul în care expresia nu are nevoie de parametri, ar trebui să utilizați paranteze goale.
Expresia lambda este aplicată în două etape. În primul rând, declarăm un tip delegat, care este compatibil cu o expresie lambda, iar apoi delega instanță, care i se atribuie o expresie lambda. După aceasta, o expresie lambda este calculat prin referire la o instanță a unui delegat. Rezultatul calculului devine valoarea returnata. Să ne uităm la un exemplu:
Block Lambda
A doua variantă a expresiei lambda este un bloc de expresie lambda. Pentru o astfel de expresie lambda este caracterizată prin creșterea performanței diferitelor operații, deoarece corpul său este permis pentru a specifica mai mult de un operator. De exemplu, puteți utiliza bucle și declarații condiționale în bloc dacă expresia lambda, declara variabile, etc. Creați expresie bloc lambda nu este dificil. Este suficient pentru a intra în corpul expresiei acolade. Pe lângă posibilitatea de a utiliza mai mulți operatori în restul expresiei blocului lambda nu diferă de cea doar considerată o singură expresie lambda.
Să modificăm exemplul anterior prin adăugarea unui captcha în formularul de înregistrare: