expresii Lambda (Ghid de programare C #)

=> Operatorul are aceeași prioritate ca operatorul de atribuire (=), și asociații la dreapta (a se vedea. Secțiunea „asociativitate“ operatorilor din articol).

Operatorii Lambda utilizate în metodele bazate pe LINQ de sintaxă interogare ca argumente pentru metodele operatorilor de interogare standard, cum ar fi cazul.

Când utilizați sintaxa bazată pe metodele de a invoca o metodă În cazul în care parametrul de clasă enumerable (ca în LINQ Obiecte și LINQ XML) este tipul de sistem delegat. FUNC . Expresia Lambda - acesta este cel mai convenabil mod de a crea un astfel de delegat. Când apelați aceeași metodă, de exemplu, în clasa Queryable (așa cum se face în LINQ SQL) Tip de parametru este Expression , în cazul în care func - este orice delegati cu un număr de func ții de parametri de intrare nu este mai mare de șaisprezece ani. Din nou, expresiile lambda sunt cel mai rapid mod de a construi un astfel de arbore de expresie. expresii Lambda permit efectuarea de apeluri În cazul în care să arate la fel, deși, de fapt, obiectele create de expresii lambda vor avea tipuri diferite.

Rețineți că, în exemplul dat mai sus semnătură delegat are un parametru de intrare implicită de tip int și returnează o valoare de tip int. Expresia lambda poate fi transformată în tipul corespunzător delegat, deoarece acesta are, de asemenea, un parametru de intrare (x) și returnează valoarea pe care compilatorul poate convertite implicit la tipul int. (Tipurile Concluzie discutate mai detaliat în următoarele secțiuni.) Delegatul cauzată de un parametru de intrare, 5, 25 returnează rezultatul.

expresiile Lambda nu sunt permise pe partea stângă este sau ca operator.

Toate restricțiile care se aplică metode anonime se aplică și expresii lambda. Pentru informații suplimentare. A se vedea metodele anonime (Ghid de programare C #).

expresie lambda cu o expresie pe partea dreaptă a operatorului => se numește lambda expresie. Lambda-expresie este utilizat pe scară largă în crearea unor structuri, cum ar fi copaci Expression (C # și Visual Basic). Expresii lambda expresii și să se întoarcă rezultatul au următoarea formă generală:

De asemenea, expresii lambda pot fi folosite atunci când argumentul este de tip Expression. de exemplu, în operatorii de interogare standard, care sunt definite în System.Linq.Queryable. La stabilirea tipului expresiei argument lambda expresie este compilat într-un copac.

Exemplu de solicitarea standard a operatorului, Count metoda. prezentat mai jos:

Compilatorul poate deduce tipul parametrului de intrare; și poate fi definită în mod explicit. Acest lambda special contorizează numărul de întregi (n), care atunci când este împărțit la doi da reziduul 1.

Următoarea linie de cod creează o secvență care conține toate elementele unei matrice de numere. la stânga de 9, deoarece acesta este primul număr din secvență nu este satisfăcătoare:

Următoarele reguli se aplică domeniului de aplicare variabilă în expresii lambda.

Variabilele Capturat nu vor fi distruse de către colectorul de gunoi, atâta timp cât delegatul care face referire, nu intra în starea de a fi distruse de colectare a gunoiului.

O variabilă declarată într-o expresie lambda, nu sunt vizibile în metoda exterioară.

Expresia lambda nu poate capta în mod direct parametrii de ref sau în afara metodei în care acestea sunt situate.

Întoarcere declarație într-o expresie lambda nu conduce la metoda de retur (finalizare), în care anunțatul / numit o expresie lambda.

Expresia Lambda nu poate conține o declarație goto. de o pauză sau să continue declarația în cadrul funcției Lambda, în cazul în care obiectul țintă este în afara blocului de tranziție. În cazul în care ținta este în interiorul blocului, atunci prezența operatorului de tranziție în afara funcției lambda va fi, de asemenea, o greșeală.

articole similare