Expression 與Func的區別

2022-09-12 11:39:17 字數 836 閱讀 9155

func是委託(delegate)

expression>是表示式

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

expression> ex = x=>x < 100;

funcfunc = ex.compile(); 

然後你就可以呼叫func:

func(5) //-返回 true

func(200) //- 返回 false

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

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

//錯誤的**

funcpredicate = 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);

Expression 和Func的區別

1.expression 是表示式 使用lambdaexpression構建表示式樹 expressionint,int,int,int expr x,y,z x y z console.writeline expr.compile 1,2,3 2.func委託 封裝乙個具有乙個引數並返回 tres...

函式指標,func與 func的區別

1.函式名,就是函式的首位址,那麼func與 func應該是不一樣的,偶然看到別人說兩種用法一樣,所以決定試一試。2.環境配置,vscode 模組 c c 0.29.0 編譯器 mingw,x86 64 8.1.0x86 64 8.1.0。3.如下 include include include v...

C action 與 func 的用法

總結 1 action用於沒有返回值的方法 引數可以根據自己情況進行傳遞 2 func恰恰相反用於有返回值的方法 同樣引數根據自己情況情況 3 記住無返回就用action,有返回就用funcusing system namespace funcactiondemo public static voi...