Generic Delegate
-
Upload
zheng-wei-lin -
Category
Technology
-
view
3.733 -
download
9
Transcript of Generic Delegate
![Page 1: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/1.jpg)
Generic Delegate (泛型委派)
Titan, Jonathan2013.06.10
![Page 2: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/2.jpg)
Delegate 回顧......
![Page 3: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/3.jpg)
上次我們談到......
■ Delegate 與使用 Delegate 4 步驟
![Page 4: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/4.jpg)
典型的 Delegate 使用情境
![Page 5: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/5.jpg)
Generic Delegate (泛型委派)
![Page 6: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/6.jpg)
我們先看看以下的程式碼...
![Page 7: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/7.jpg)
![Page 8: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/8.jpg)
要如何簡化程式碼呢?
![Page 9: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/9.jpg)
使用 Generic Method!
![Page 10: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/10.jpg)
如果我們要撰寫 Delegate 呢?
![Page 11: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/11.jpg)
![Page 12: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/12.jpg)
如何將 Delegate 泛型化?
![Page 13: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/13.jpg)
將 delegate 宣告成泛型
![Page 14: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/14.jpg)
如何再做進一步的簡化呢?
![Page 15: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/15.jpg)
.NET 常見的 Generic Delegate Type
![Page 16: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/16.jpg)
Func<T1, T2 , TResult>
![Page 17: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/17.jpg)
Func 不需要再宣告 delegate type
回傳型別
參數型別
![Page 18: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/18.jpg)
![Page 19: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/19.jpg)
Func<T>
![Page 20: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/20.jpg)
舉例
![Page 21: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/21.jpg)
IEnumerable<T>.Select()
滿足 Func<T> 的方法
delegate type 完整的宣告
![Page 22: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/22.jpg)
Recap■ Func<T1, T2, TResult>
■ Func 一定有回傳值
■ Func 的signature TResult 固定在最後一個
![Page 23: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/23.jpg)
Action<T>
![Page 24: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/24.jpg)
![Page 25: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/25.jpg)
Action<T1, T2>
![Page 26: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/26.jpg)
![Page 27: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/27.jpg)
舉例
![Page 28: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/28.jpg)
List<T>.Foreach
滿足 Action<T> 的方法
delegate type 完整宣告
![Page 29: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/29.jpg)
Action
![Page 30: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/30.jpg)
![Page 31: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/31.jpg)
Action
滿足 Action 的方法
delegate完整的宣告
![Page 32: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/32.jpg)
Action<T> VS. Func<T>
![Page 33: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/33.jpg)
■ Action<T>
Recap
■ Action VS. Action<T>
■ Action VS. Func<T>
■ Func<T> VS. Action<T>
![Page 34: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/34.jpg)
Predicate<T>
![Page 35: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/35.jpg)
![Page 36: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/36.jpg)
舉例
![Page 37: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/37.jpg)
IEnumerable<T>.Where()
滿足Predicate 的方法
delegate type 完整宣告
![Page 38: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/38.jpg)
Recap■ Predicate<T>
■ Predicate 輸入型別是T , 回傳是bool
■ Predicate<T> VS. Func<T> VS. Action<T>
![Page 39: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/39.jpg)
![Page 40: Generic Delegate](https://reader036.fdocuments.net/reader036/viewer/2022062308/55c3f4dbbb61eb65068b47cb/html5/thumbnails/40.jpg)
Thank you!