[C#] Func - 簡化程式碼歷史 第二章

上次聊到委派 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)

如果內容有誤請多鞭策謝謝