我正在编写一个通用二进制搜索树。我需要比较两种泛型类型。该怎么做,假设用户在T类中实现了IComparable
。
private void Insert(T newData, ref Node<T> currentRoot)
{
if (currentRoot == null)
{
currentRoot = new Node<T>(newData);
return;
}
if (newData <= currentRoot.data) //doesn't work, need equivalent functionality
Insert(newData, ref currentRoot.lChild);
else
Insert(newData, ref currentRoot.rChild);
}
答案 0 :(得分:6)
您必须在方法中添加通用约束where T: IComparable<T>
,以使CompareTo()
方法适用于您的类型T
的实例。
private void Insert(T newData, ref Node<T> currentRoot) where T: IComparable<T>
{
//...
}
然后你可以使用:
if (newData.CompareTo(currentRoot.data) <= 0)
{
//...
}
答案 1 :(得分:1)
使用where
子句,即
class Node<T> where T : IComparable