看板 C_Sharp 關於我們 聯絡資訊
Class father {} Class child : father {} father f = new child(); Child C1 = (child)f ;//第一種強轉 child C2 = f as child ;//第二種強轉 除了上述兩種強轉外 還有什麼方式可以轉成子類別呢 有沒有動態的方式能轉呢 例如有多種子類別實體 放在父類別的List變數裡 要怎麼依序的將該List轉成子類別呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.154.63 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1448292664.A.149.html
TameFoxx: Foreach(child _child in FatherList) 11/23 23:34
TameFoxx: 你要的是這個嗎 11/23 23:34
TameFoxx: 還是你想把一個有貓有老虎有獅子的List分類出來 11/23 23:36
grace0523: 對 那個list有很多不同的子類別 要如轉回到子類別呢 11/23 23:40
bantime: 你想轉回來做什麼? 設計上應該不會用到這件事情才對.. 11/23 23:52
bantime: 附註 第二種轉型方式印像中效能會比較好 11/23 23:53
Litfal: 如果確定轉換一定成功,第一種效能比較好 11/23 23:57
Litfal: 然後需要這樣轉的話,通常設計有問題... 11/23 23:57
bantime: 因為第一種方式就是少了檢查直接轉型 不確定狀況下 11/24 00:07
bantime: as 會比較安全y 11/24 00:07
soup514: 還是要看轉回來做什麼? 不然實作interface就好啦 11/24 00:33
pauliaia: 個人覺得有共通方法就用interface沒有就switch + typeof 11/24 01:36
pauliaia: http://stackoverflow.com/questions/1711005 下下方解 11/24 01:38
grace0523: 轉回來的原因是要用子類別內宣告的變數 11/24 07:48
grace0523: 在父類別那邊看不到子類別自己的東西 11/24 07:49
bantime: 如果變數型別一樣 可以寫個interface 抓出來 11/24 08:47
bantime: 或者寫個function return 出來 11/24 08:48
iterator: as 效能比較好, http://tinyurl.com/clr68dj 11/24 16:18
iterator: 是共通的功能, 應該要透過 virtual method 提供 11/24 16:21
iterator: 如果要從單獨抽出某個子類別的 object, 11/24 16:27
iterator: 可以透過 List<P>.OfType<C>() 11/24 16:28
Litfal: 連結那篇說的有問題,有空再來聊,你要不要自己測測先? 11/26 03:58