Как использовать операторы сравнения с дженериками в C#
я пытался реализовать бинарное дерево поиска на C# с использованием дженериков, для того чтобы в дереве можно было хранить любые типы данных. Однако я столкнулся с проблемой, решение которой найти не смог. При попытки сравнить два элемента дерева между собой среда разработки выдала мне ошибку CS0019: "Оператор "<" невозможно применить к операнду типа "T" и "T"". Одним из вариантов возможного решения этой проблемы, который я нашел, была идея наложить ограничения на T, унаследовав его от интерфейса IComparable, затем перегрузив операции сравнения с помощью метода CompareTo(). Однако это проблему не решило. Код прикладываю ниже. Заранее спасибо за помощь. P.S.: Ошибка возникает в конце программы, в последнем "if"
class Node<T> where T : IComparable<T>
{
public T data;
public Node<T> parent;
public Node<T> left;
public Node<T> right;
public Node()
{
data = default;
parent = null;
left = null;
right = null;
}
public static bool operator >(Node<T> x, Node<T> y)
{
return (x.data.CompareTo(y.data) > 0);
}
public static bool operator <(Node<T> x, Node<T> y)
{
return (x.data.CompareTo(y.data) < 0);
}
}
class BinaryTree<T> where T: IComparable<T>
{
private Node<T> root;
public BinaryTree()
{
root = new Node<T>();
}
public void add(T newData)
{
if (root.data == null)
{ root.data = newData; }
else
{
var newNode = new Node<T>();
newNode.data = newData;
var curNode = root;
while (curNode != null)
{
if (curNode.data < newNode.data)
{
}
}
}
}
}