2012-04-04 11 views
65

Mi sono appena imbattuto nel concetto di alberi di espressione che ho sentito più volte. Voglio solo capire cosa si intende per un albero di espressione e il suo scopo.Cosa sono gli Expression Trees, come li usi e perché li useresti?

mi piacerebbe se qualcuno potrebbe anche indicarmi spiegazioni semplici e campioni di utilizzo.

+1

possibile duplicato di [Perché utilizzare Expression > piuttosto che Func ?] (Http://stackoverflow.com/questions/793571/why-would-you-use-expressionfunct- piuttosto-che-funct) – nawfal

+0

risposto con alcuni esempi ..http: //stackoverflow.com/questions/403088/practical-use-of-expression-trees/20470060#20470060 – Moumit

risposta

63

Un'espressione albero è una struttura di dati che contiene espressioni, che è sostanzialmente codice. Quindi è una struttura ad albero che rappresenta un calcolo che puoi fare nel codice. Queste parti di codice possono quindi essere eseguite "eseguendo" l'albero delle espressioni su un insieme di dati.

Una cosa grandiosa di alberi di espressione è che si può costruire in codice; cioè, si crea codice eseguibile (o una sequenza di passaggi) nel codice. È anche possibile modificare il codice prima di eseguirlo sostituendo espressioni con altre espressioni.

Un'espressione è quindi un delegato funzione, come (int x => return x * x).

Vedi anche http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx

+3

Questo non è proprio vero. Come sottolineato nell'articolo collegato, gli alberi di espressione vengono principalmente utilizzati per rappresentare calcoli che verranno inviati attraverso il filo per essere eseguiti altrove. Per questo motivo non contengono codice; piuttosto sono invece di codice. –

+1

Gli alberi di espressione possono essere utilizzati per qualsiasi calcolo che si desidera eseguire, localmente o in remoto. Potresti facilmente scrivere un parser che converta un'espressione digitata in un albero delle espressioni. Inoltre non ho mai detto che Expression Trees contenga il codice. –

+1

se "struttura ad albero con pezzi di codice in esso" non intende significare che "contengono codice", allora dovresti modificare la tua risposta per renderla chiara. Dovresti chiarire che le espressioni non contengono alcun codice IL, e contano di essere ulteriormente tradotte in qualcosa di eseguibile. –

Problemi correlati