我四处搜索并找到了一个有点相关的答案,但是,对于我的一生,我仍然无法弄清楚我哪里出错了!我正在尝试使用类似于下面的代码来实现一些通用类型的树数据结构,但我得到编译器错误 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
}
}