作者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
1F:推 Cloud:请问一下,我要比的是 ItemType, 并不是自订定的TreeNode 02/24 22:03
2F:→ Cloud:所以" int > int "应该可行,而不需 overload opeator> 02/24 22:04