嗚嗚喔學習筆記: 六月 2017

搜尋此網誌

2017年6月26日 星期一

C# - 從 Linq 學習 [ 如何使用 Interface(介面) 和 Generic(泛型) ]

這篇不是在說 怎麼使用 Linq
而是再說嘗試 寫出Linq
試圖去解析 Linq的寫法
希望帶來一些啟發
可以用在專案上

如果只是想知道如何使用
可以左轉參考這邊
https://kw0006667.wordpress.com/2013/05/29/clinq%E7%B0%A1%E5%96%AE%E4%BD%BF%E7%94%A8-from-where-select/
我覺得這篇寫得還不錯

----------------------------------------------------

這篇用 Linq 的 ToList() 當作範例 :
總歸來說 他使用了三樣東西

1. 擴充函式
2. Interface
3. Generic

在已經知道上述 3 樣東西的是什麼前提下
才會了解下面在說啥

-----------------------------------------------------
切入正題 :

Queue<T> , Statck<T> , T[]
都能夠直接使用Linq語法 ToList()
直接轉換成 List<T> 的形式
為什麼?

因為我們都知道一個規則
兒子Class 可以使用 爸爸Class 的 函式

Queue<T> : IEnumerable<T> 
Stack<T> : IEnumerable<T> 
T[] : IEnumerable<T>

所以基於 ( 因為爸爸有 所以我也有的概念 )
我們直接擴充爸爸就好啦 ~

範例程式碼 :



結果:

 

-------------------------------------------------------------------
結論 :
最終成功山寨了 Linq ToList() 這個Function
至於其他Linq的 Function 也是基於差不多的想法
只是有用到 delegate 等等其他技巧
可能可以再寫一篇 0.0