上次聊到委派 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)
如果內容有誤請多鞭策謝謝