ジェネリックスを使用してC#でバイナリ検索ツリーを実装しようとしていますが、IComparable
インターフェイスの実装方法はわかりません。私は汎用タイプTを比較できないので、CompareTo()
の機能を実装する方法がわかりません。C#ジェネリッククラスの型とIComparableは型を比較できませんT
public class BSTNode<T> : IComparable<BSTNode<T>>
{
public T Data { get; set; }
public BSTNode<T> LeftChild { get; private set; }
public BSTNode<T> RightChild { get; private set; }
...
}
public void Insert(BSTNode<T> node)
を実装しようとしたとき、私はData
プロパティを比較する必要があるが、私はエラーを取得する私はジェネリック型を比較することはできませんと言ってT.
私が実装しようとした。ここでは
コードですIComparableインターフェイスがCompareTo関数では、Tエラーと比較できないのと同じです。どのように私はこれを修正することができる任意のアイデア?あなたはData
にCompareTo
を呼び出すようになる
public class BSTNode<T> : IComparable<BSTNode<T>>
where T : IComparable<T>
:あなたが必要なもの
おそらく 'T'は' IComparable'も実装しているはずです。 – Tdorno
私はその質問を見ましたが、タイプTにCompareToメンバ関数がないというエラーが表示されます。 – Naz
'パブリッククラスBSTNode:IComparableを> T:IComparable' –
Tdorno