如果你已經用過LINQ, 你應該知道函式方式,以及包含的豐富的類庫, 如果你仍不瞭解, 那根據下面的連結去熟悉一下 the LINQ tutorial, lambda 。
表達樹提供了豐富的包含引數的函式方式。
靜態樹解析
一個表達樹是定義程式碼的資料結構
var sum = 1 + 2;
二元表示式, 更準確的來說,是一個二元相加表示式, 二元表示式包含二個結點, 二個結點都是固定表示式, 左邊是1, 右邊是2
這是一個樹的完整體
定義定量狀態 (var sum = 1 + 2;
)
- 顯示宣告變數 (
var sum
)- 顯示宣告var型別 (
var
) - 宣告變數名稱 (
sum
)
- 顯示宣告var型別 (
- 操作型別 (
=
) - 二元相加表示式 (
1 + 2
)- 左邊運算元(
1
) - 相加運算子 (
+
) - 右邊運算元 (
2
)
- 左邊運算元(
var finalAnswer = this.SecretSauceFuncion( currentState.createInterimResult(), currentState.createSecondValue(1, 2), decisionServer.considerFinalOptions("hello")) + MoreSecretSauce('A', DateTime.Now, true);
對比表達樹, 上述的方式就太不直觀, 擴充套件性差
在.NET Core framework中存在大量的表示式型別, 你可以從這獲取here
// Addition is an add expression for "1 + 2" var one = Expression.Constant(1, typeof(int)); var two = Expression.Constant(2, typeof(int)); var addition = Expression.Add(one, two);
以上簡單的使用一些靜態類建立表達樹