arbori de expresie

arbori de expresie

Cartea este proiectat pentru o gamă largă de cititorii interesați de programare în C # .Vvedite scurt rezumat aici

Book: C # 4.0: Un ghid complet

arbori de expresie

Un alt mijloc asociat cu LINQ, este un arbore de expresie care reprezintă expresia lambda sub formă de date. Aceasta înseamnă că expresia foarte lambda nu se poate face, dar poate fi convertit într-o formă executabilă. arbori de expresie sunt încapsulate în System.Linq.Expressions.Expression clasă. Ele sunt utile în cazurile în care cererea se efectuează în afara programului, cum ar fi SQL la baza de date. În cazul în care cererea este prezentată sub formă de date, acesta poate fi convertit într-un format care poate fi citit pentru baza de date. Acest proces se realizează, de exemplu, LINQ instrumente SQL în dezvoltarea Visual Studio IDE. Astfel, arborii de expresie contribuie la susținerea în C # diferite baze de date.

pur și simplu apel metoda Compile () pentru a obține o formă executabilă a unui arbore de expresie. definită în clasa de expresie. Această metodă returnează o referință care poate fi atribuit delegat pentru executarea ulterioară. Un tip delegat poate fi declarată privată sau un tip delegat predefinit în func spațiul de nume de sistem. Două forme FUNC delegare a atribuțiilor menționate anterior atunci când se analizează metodele de solicitare, dar există și alte forme de ea.

Expresia arbore are următoarea restricție importantă: ele pot reprezenta numai o singură expresie lambda. Cu ajutorul lor, nu puteți trimite un bloc de expresii lambda.

Mai jos este un program de probă care demonstrează utilizarea unui copac expresie particulară. În acest program, creați mai întâi un arbore de expresie ale cărei date reprezintă o metodă care determină dacă unul este un factor întreg al celuilalt. Apoi expresia copac este compilat în cod executabil. În cele din urmă, executarea codului compilat este prezentat în program.

Asta este ceea ce rezultatele în punerea în aplicare a acestui program.

Numărul 5 este un factor de 10.
Numărul 7 nu este un factor de 10.

Acest program de exemplu demonstrează utilizarea a două etape principale ale unui arbore de expresie. În primul rând, se creează un arbore de expresie utilizând următoarea declarație.

expresieIsFactorExp = (n, d) => (d! = 0). (N% d) == 0. false;

Această afirmație este construit reprezentarea lambda expresii în memorie. Așa cum sa explicat mai sus, această prezentare este disponibil pe link-ul apropriat IsFactorExp delegat. Iar în următoarea declarație expresiile date sunt convertite în cod executabil.

După ce faci acest operator delegat IsFactorExp poate fi numit pentru a determina dacă un singur număr întreg de multiplicare altul.

Rețineți, de asemenea, că desemnează tipul delegat. In aceasta forma funs delegatului doi parametri de tip specificat int și tipul de retur bool. Programul în cauză este utilizat în această formă funs delegat. compatibil cu expresii lambda, după cum este necesar pentru exprimarea a doi parametri. Pentru alte expresii lambda pot fi funs delege adecvați alte forme în funcție de numărul de parametri necesari. In general, forma specifică de funs delegat trebuie să îndeplinească cerințele expresiei lambda.

articole similare