c#LINQ表達樹

若是你已經用過LINQ, 你應該知道函數方式,以及包含的豐富的類庫, 若是你仍不瞭解, 那根據下面的連接去熟悉一下 the LINQ tutorial,  lambda express

表達樹提供了豐富的包含參數的函數方式。api

靜態樹解析數據結構

一個表達樹是定義代碼的數據結構ide

var sum = 1 + 2;

二元表達式, 更準確的來講,是一個二元相加表達式, 二元表達式包含二個結點, 二個結點都是固定表達式, 左邊是1, 右邊是2函數

這是一個樹的完總體this

定義定量狀態 (var sum = 1 + 2;)spa

  • 顯示聲明變量 (var sum)
    • 顯示聲明var類型 (var)
    • 聲明變量名稱 (sum)
  • 操做類型 (=)
  • 二元相加表達式 (1 + 2)
    • 左邊操做數(1)
    • 相加運算符 (+)
    • 右邊操做數 (2)
var finalAnswer = this.SecretSauceFuncion(
    currentState.createInterimResult(), currentState.createSecondValue(1, 2),
    decisionServer.considerFinalOptions("hello")) +
    MoreSecretSauce('A', DateTime.Now, true);

對比表達樹, 上述的方式就太不直觀, 擴展性差code

在.NET Core framework中存在大量的表達式類型, 你能夠從這獲取hereblog

// 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);

以上簡單的使用一些靜態類建立表達樹ci

相關文章
相關標籤/搜索