Re: [問題] 泛型的約束條件?
public static TItem 相加<TItem>(TItem 左值, TItem 右值)
{
string s = (typeof(TItem)).FullName;
TItem RV;
switch(s)
{
case "System.Int32":
int? L = 左值 as int?; ← 直接用(int) 或 as int都不能過
int? R = 左值 as int?;
if (!L.HasValue || !R.HasValue)
throw new ArithmeticException("相加時,轉型為System.Int32失敗");
RV = (L.Value + R.Value) as TItem; ← 不給轉
break;
default:
throw new ArgumentException("這個型別無法相加");
}
return RV;
}
=============================================================================
試過第二條路,但還是不行........
用多載或是轉型有個缺點:
如果我要用的型別會用到別的參考,例如XNA的Vector2
那就得把XNA.Framework叫進來
這會變得很奇怪......
我現在寫的算是「小工具」之類的東西
未來可能會拿去別的地方用
如果今天這樣寫下去,那未來即使如果我寫的程式根本用不到XNA的組件
也得把XNA的參考加進來才能用,更不用說使用者還得裝XNA runtime的麻煩
拆散寫,雖然可行,但似乎也不太對
這會造成不少分散的程式碼.....
到時候要修改個東西會不知道該去哪裡找.....
orz.....
寫個加法怎麼這麼難.....
--
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.77
→
08/23 11:42, , 1F
08/23 11:42, 1F
→
08/23 11:43, , 2F
08/23 11:43, 2F
→
08/23 11:44, , 3F
08/23 11:44, 3F
→
08/23 11:45, , 4F
08/23 11:45, 4F
→
08/23 11:46, , 5F
08/23 11:46, 5F
→
08/23 11:51, , 6F
08/23 11:51, 6F
→
08/23 11:58, , 7F
08/23 11:58, 7F
→
08/23 14:56, , 8F
08/23 14:56, 8F
→
08/23 14:57, , 9F
08/23 14:57, 9F
→
08/23 14:59, , 10F
08/23 14:59, 10F
→
08/23 14:59, , 11F
08/23 14:59, 11F
討論串 (同標題文章)