2012-04-04 156 views
65

我剛剛遇到了多次聽過的表達樹的概念。我只是想了解一個表達樹和它的目的是什麼意思。什麼是表達樹,您如何使用它們,以及爲什麼要使用它們?

我會喜歡它,如果有人也可以指導我簡單的解釋和使用樣本。

+1

可能重複[爲什麼要使用Expression >而非Func鍵?](http://stackoverflow.com/questions/793571/why-would-you-use-expressionfunct-而不是功能) – nawfal 2014-07-07 06:52:34

+0

回答幾個例子..http://stackoverflow.com/questions/403088/practical-use-of-expression-trees/20470060#20470060 – Moumit 2016-04-25 11:29:31

回答

63

表達式樹是一個包含表達式的數據結構,它基本上是代碼。所以它是一個樹形結構,代表您可能在代碼中進行的計算。這些代碼片段可以通過在一組數據上「運行」表達式樹來執行。

關於表達式樹的一個好處是可以在代碼中構建它們;也就是說,您可以在代碼中構建可執行代碼(或一系列步驟)。您也可以在執行代碼之前通過用其他表達式替換表達式來修改代碼。

表達式是一個函數委託,例如(int x => return x * x)

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

+3

這不是真的。正如鏈接文章中指出的那樣,表達式樹主要用於表示計算結果,這些計算結果將通過網絡發送到其他地方執行。爲此,他們不包含代碼;而不是代碼。 – 2016-06-29 05:53:32

+1

表達式樹可用於任何要在本地或遠程執行的計算。您可以輕鬆編寫一個解析器,將分類器轉換爲表達式樹。我也從來沒有說Expression Tree包含代碼。 – 2016-07-13 14:10:55

+1

如果「其中包含代碼的樹結構」不是意味着它們「包含代碼」,那麼您應該編輯您的答案以使其清楚。您應該明確表示表達式不包含任何IL代碼,並且依賴於被進一步轉換爲可執行文件。 – 2016-07-15 00:23:54

相關問題