上次聊到委派 Delegate 寫起來總是有點繁瑣
於是有了Func 可以簡化Delegate 的寫法 和少點命名
前言
寫Delegate的時候 一定要先命名一個委派型別
Func可以簡化程式碼
Func (一定有回傳)
MyDelegate 在這裡先假設一律命名為Func 會像這樣
然後 傳入的int x 和 回傳值 strting 可以改泛型的方式
此時會發現 我們原本命名的 MyDelegate ( 假設是Func) 已經消失了
取而代之的就是Func
原本的 傳入的int x 和 回傳值 strting 改用泛型
來看一下Func
Func是一定有回傳值的所以
Func<R> 時表示沒有傳入值 此時的R就是回傳型別
Func<T,R> 時表示T傳入值型別 此時的R就是回傳型別
Func<T,U,R> 時表示T是第一個傳入值型別,U是第二個傳入值型別 此時的R就是回傳型別
最多有16個傳入值型別
超過一個任意型別時 最後一個型別就是回傳型別 其他就是傳入型別
最後可以直接在方法內使用
熟練轉換
上面的範例要能很熟練的看得懂
就會漸漸習慣,Func 定義的方法簽章
改用Func完整範例
註解掉的程式碼就是改成Func可以減少的code
Action (不用回傳值)
就是不需要回傳值的方法 就是用Action
其他都跟Func一樣 就不多說了
結語
Func一定要熟練的看到就馬上能理解他要的方法簽章
這樣就可以邁入最後的 Lambda Expressions (連方法都不想命名啦 消滅CheapBookFilter)
如果內容有誤請多鞭策謝謝