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...