委託表示式和委託的區別

2021-09-23 10:12:35 字數 1125 閱讀 6688

func是委託(delegate)

expression>是表示式

expression編譯後就會變成delegate,才能執行。比如

expression> ex = x=>x < 100;

funcfunc = ex.compile(); 

然後你就可以呼叫func:

func(5) //-返回 true

func(200) //- 返回 false

而表示式是不能直接呼叫的。

案例:不正確的查詢**造成的資料庫全表查詢。

//錯誤的**

func predicate =null;

if(type == 1)

else

//_questionfeedrepository.entities的型別為iqueryable

_questionfeedrepository.entities.where(predicate);

上面**邏輯是根據條件動態生成linq查詢條件,將func型別的變數作為引數傳給where方法。

實際上where要求的引數型別是:expression>。

解決方法:

不要用func,用expression>。

//正確的**

expression> predicate=null;

if(type == 1)

else

_questionfeedrepository.entities.where(predicate);

委託 lambda表示式

呼叫委託的的時候,其包含的每乙個方法都會被執行。委託要求,定義的簽名和返回型別必須一致。建立委託需要注意的地方 因為大部分的委託需要重用,而事件不用,所以前者寫在類外邊,後者寫在類裡邊。一般委託寫在類的外邊,並且用public宣告。委託只有乙個規矩,就是輸入輸出一樣就行,那他屬於乙個委託,你可以把它...

委託 lambda表示式

呼叫委託的的時候,其包含的每乙個方法都會被執行。委託要求,定義的簽名和返回型別必須一致。建立委託需要注意的地方 因為大部分的委託需要重用,而事件不用,所以前者寫在類外邊,後者寫在類裡邊。一般委託寫在類的外邊,並且用public宣告。委託只有乙個規矩,就是輸入輸出一樣就行,那他屬於乙個委託,你可以把它...

c Lamdba表示式與委託

介紹 lambda 表示式 lambda expression 是乙個匿名函式,在c 3.0中引入了 lambda 表示式,它是對匿名函式的一種簡化,可以包含表示式和語句,並且可用於建立委託或表示式目錄樹型別。如何建立 格式 形參列表 若要建立 lambda 表示式,需要在 lambda 運算子 左...