[問題] 泛型的約束條件?

看板C_Sharp作者 (NiceBoat.)時間15年前 (2010/08/22 21:07), 編輯推噓1(1020)
留言21則, 4人參與, 最新討論串1/2 (看更多)
public static TItem 相加<TItem>(TItem 左值, TItem 右值) where TItem: 這裡該填什麼? { return 左值 + 右值; } 希望TItem 「可以運算」 例如:int float double 之類的型別 請問要怎麼限制泛型條件? 已經試過 where TItem:int where TItem:System.Int32 可是都不行...... 如果不行用泛型去解 那勢必得用多載的方式去寫 那又得寫一堆類似的程式碼了....... 寫個程式整天都在面對一堆小改的程式碼 讓我想把word的合併列印拿出來用了........ -- 20330 6/17 - □ (本文已被吃掉) 幹!這梗有毒...救命~~ 20331 6/17 - □ (本文已被吃掉) 〒 〒 20332 1 6/17 - □ (本文已被吃掉) ▼▼▼▼ 20333 XX 6/17 - 囧 (哈哈拎北有毒) \▲▲▲▲\ = ●20334 1 6/17 - □ (本文已被吃掉) 20335 6/17 - □ (本文已被吃掉) 口卡口卡嘗百草 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.27.109.110

08/22 21:12, , 1F
最簡單的方法 用typeof檢查T的型別 如果不是你要的就丟
08/22 21:12, 1F

08/22 21:12, , 2F
Exception
08/22 21:12, 2F

08/22 21:13, , 3F
TItem
08/22 21:13, 3F

08/22 21:26, , 4F
那個在執行的時候才會吐ex出來,不太好吧? 囧"
08/22 21:26, 4F

08/22 23:30, , 5F
你完全沒弄懂泛型的觀念...
08/22 23:30, 5F

08/22 23:35, , 6F
樓上,你是指什麼觀念? 我自修,思路跟想法會跟學校教
08/22 23:35, 6F

08/22 23:35, , 7F
出來的不一樣.....
08/22 23:35, 7F

08/22 23:37, , 8F
generics的用處是在於指明瓶子裡到底裝了什麼東西...
08/22 23:37, 8F

08/22 23:38, , 9F
嗯? 什麼意思?
08/22 23:38, 9F

08/22 23:40, , 10F
你還是去用c++吧,c++有提供operator overload
08/22 23:40, 10F

08/22 23:41, , 11F
你想做的東西,C++的operator overload可以達到你要的功能
08/22 23:41, 11F

08/22 23:45, , 12F
C#也有運算子多載啦..... 但我想做的不是這個
08/22 23:45, 12F

08/22 23:46, , 13F
我現在在寫類似語法樹的東西,數值可能是int、float
08/22 23:46, 13F

08/22 23:47, , 14F
、double、decimal甚至Vector2都有可能......
08/22 23:47, 14F

08/22 23:48, , 15F
當我讀到 XXX + OOO 的時候,我必須呼叫一個遞迴去把他
08/22 23:48, 15F

08/22 23:49, , 16F
們加起來,問題是.... 我必須得一個個寫多載嗎? 那我漏
08/22 23:49, 16F

08/22 23:49, , 17F
掉的不就沒辦法作運算了? 而且也是為了節省程式碼的份
08/22 23:49, 17F

08/22 23:50, , 18F
量,因為還有+ - * / % 之類的要寫......
08/22 23:50, 18F

08/23 00:04, , 19F
C#不支援這種限制條件 這有討論http://tinyurl.com/2dayufv
08/23 00:04, 19F

08/23 00:13, , 20F
很好,大約有五十多個多載要寫了.... 〒△〒
08/23 00:13, 20F

08/23 09:11, , 21F
試著用as轉成int? 但是轉不回去.....
08/23 09:11, 21F
文章代碼(AID): #1CSI4MVz (C_Sharp)
文章代碼(AID): #1CSI4MVz (C_Sharp)