1. 程式人生 > >Lambda表示式樹的簡單理解

Lambda表示式樹的簡單理解

Lambda表示式樹

Lambda表示式樹允許我們像處理資料(比如讀取,修改)一樣來處理Lambda表示式。我以一個例子簡單說明:

Expression<Func<int, bool>> filter = n => (n * 3) < 5;
BinaryExpression lt = (BinaryExpression)filter.Body;
BinaryExpression mult = (BinaryExpression)lt.Left;
ParameterExpression en = (ParameterExpression)mult.Left
; ConstantExpression three = (ConstantExpression)mult.Right; ConstantExpression five = (ConstantExpression)lt.Right; var One = filter.Compile(); Console.WriteLine("Result: {0},{1}", One(5),One(1)); Console.WriteLine("({0} ({1} {2} {3}) {4})", lt.NodeType, mult.NodeType, en.Name, three.Value, five.Value
);

效果圖如下: 這裡寫圖片描述

Lambda表示式和Lambda表示式樹要點

Lambda表示式的引數型別可以忽略,因為可以根據使用的上下文進行推斷。 Lambda表示式的主體(body)可以是表示式,也可以是語句塊。 Lambda表示式傳入的實參將參與型別推斷,以及方法過載辨析。 Lambda表示式和表示式體可以被轉換為表示式樹。 表示式樹允許lambda表示式能夠代表資料結構替代表示為執行程式碼。