私は周りを検索して、やや関連性のある答えを見つけましたが、私の人生では、どこが間違っているのかまだわかりません! 以下のようなコードを使用して、ジェネリックに型指定されたツリー データ構造を実装しようとしていますが、コンパイラ エラー CS0311 が発生します。
エラー CS0311: 型 'Test.TestType' は、ジェネリック型またはメソッド 'Test.TreeIndex<K>' の型パラメーター 'K' として使用できません。「Test.TestType」から「Test.IIndexable<Test.TestType>」への暗黙的な参照変換はありません。
コンパイラがこれに対処する方法を知らない理由がわからないので、手がかりをいただければ幸いです。
public interface IIndexable<K> where K : IComparable
{
byte[] ToBytes();
K FromBytes(byte[] bytes);
}
public class TestType : IIndexable<byte>, IComparable
{
public int CompareTo(object b)
{
return 1;
}
public byte[] ToBytes()
{
return new byte[1];
}
public byte FromBytes(byte[] bytes)
{
return 0;
}
}
public class TreeIndex<K> where K : IComparable, IIndexable<K>
{
public int SomeMethod(K a, K b)
{
return a.CompareTo(b);
}
}
class Program
{
static void Main()
{
TreeIndex<TestType> treeIndex = new TreeIndex<TestType>(); // CS0311 generated twice here
}
}