2012-04-04 13 views
65

Po prostu natknąłem się na koncepcję drzew ekspresyjnych, które słyszałem wielokrotnie. Chcę tylko zrozumieć, co rozumie się przez drzewo ekspresji i jego cel.Co to są drzewa wyrażeń, jak ich używasz i dlaczego ich używasz?

Bardzo bym chciał, gdyby ktoś mógł również skierować mnie do prostych wyjaśnień i przykładów użycia.

+1

możliwe duplikat [Dlaczego należałoby użyć wyrażenia > zamiast Func ?] (Http://stackoverflow.com/questions/793571/why-would-you-use-expressionfunct- raczej niż funct) – nawfal

+0

Odpowiedź na kilka przykładów ..http: //stackoverflow.com/questions/403088/practical-use-of-expression-trees/20470060#20470060 – Moumit

Odpowiedz

63

Drzewo wyrażeń jest strukturą danych zawierającą wyrażenia, które w zasadzie są kodami. Tak więc jest to struktura drzewa, która reprezentuje obliczenia, które możesz wykonać w kodzie. Te części kodu można następnie wykonać przez "uruchomienie" drzewa wyrażeń na zbiorze danych.

Wspaniałą rzeczą w drzewach ekspresji jest to, że można je zbudować w kodzie; oznacza to, że budujesz kod wykonywalny (lub sekwencję kroków) w kodzie. Możesz także zmodyfikować kod przed jego wykonaniem, zastępując wyrażenia innymi wyrażeniami.

Wyrażenie to funkcja delegata funkcji, na przykład (int x => return x * x).

Zobacz także http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx

+3

To nie jest prawda. Jak wskazano w połączonym artykule, drzewa wyrażeń są używane głównie do reprezentowania obliczeń, które będą wysyłane przez przewód w celu wykonania w innym miejscu. Z tego powodu nie zawierają kodu; raczej są one zamiast kodu. –

+1

Drzewa wyrażeń mogą być używane do wszelkich obliczeń, które chcesz wykonać lokalnie lub zdalnie. Możesz łatwo napisać analizator składni, który przekształci wpisane wyrażenie w Drzewo wyrażeń. Nigdy też nie powiedziałem, że drzewa wyrażeń zawierają kod. –

+1

jeśli "struktura drzewa z fragmentami kodu" nie ma oznaczać, że "zawierają kod", należy edytować odpowiedź, aby było to jasne. Powinieneś wyjaśnić, że wyrażenia nie zawierają żadnego kodu IL i polegają na dalszym tłumaczeniu na coś wykonywanego. –

Powiązane problemy