作者FantasyRyu (眩惑之龍)
看板C_Sharp
標題Re: [問題] template語法問題
時間Tue Feb 24 21:40:43 2009
※ 引述《Cloud (抓不住...)》之銘言:
: 下述是我學習C#的疑問
: public class TreeNode<ItemType>
: {
: public ItemType m_Value; // member
: public TreeNode(ItemType val){m_Value = val; } // Ctor
: public void comapre(ItemType v )
: {
: if( m_Value > v ) // 編譯錯誤,這裡的值會無法比較,即使
: // ItemType為int
: {
: // some operation
: }
: }
: }
: 請問該如何實做?? 是否需要ICompariable ??
IComparable是用來排序的,跟你的寫法無關,因為你直接用>符號來比較。
你的ItemType是不是Int不重要。
重要的是如果你要自定類別,那麼Operator是一定要重寫的。
不然「int > int」這樣編譯器看得懂,「科科 > 科科」就看不懂了,
因為你沒有定義自定類別要怎麼比大小。
但是重寫 > 的語法我忘了,科科
public static bool operator > (科科 a, 科科 b)
{
return a.value > b.value;
}
我憑印象亂寫的,請查書確定一下。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.20.113
推 Cloud:請問一下,我要比的是 ItemType, 並不是自訂定的TreeNode 02/24 22:03
→ Cloud:所以" int > int "應該可行,而不需 overload opeator> 02/24 22:04