我已经从使用IComparable
更改为IComparable<Artist>
但是我收到了错误
'RecordCollection.Artist'没有实现接口成员'System.IComparable.CompareTo(object)'
class Artist : IComparable<Artist>
我添加了一个CompareTo方法。
不确定这个错误意味着什么,任何帮助描述我为什么会这样做会很棒。
class Artist : IComparable<Artist>
{
private String Name;
private int NoMem;
public Artist(string Name, int NoMem)
{
this.Name = Name;
this.NoMem = NoMem;
}
public int CompareTo(Artist other)
{
if (other == null) return 1;
else
return 0;
}
}
新艺术家AVL树
AVLTree<Artist> treeAVL = new AVLTree<Artist>();
答案 0 :(得分:3)
您必须确保定义Artist
的项目编译没有错误。否则,您的其他项目将不会接受更改,仍然认为Artist
实施IComparable
而不是IComparable<T>
。那是你得到编译时错误的时候:
'RecordCollection.Artist'没有实现接口成员'System.IComparable.CompareTo(object)'
也没有技术上需要实施CompareTo(object)
,也无法解决您的问题。
答案 1 :(得分:1)
如果您复制并粘贴了该错误,看起来您应该像这样实施CompareTo
:
public int CompareTo(object other)
{
if (other == null) return 1;
else
return 0;
}
答案 2 :(得分:1)
消息:
'RecordCollection.Artist'没有实现接口成员'System.IComparable.CompareTo(object)'
明确指出它认为你的类仍然声明它在某处实现了IComparable
。您可能想要寻找它(它可以通过partial class
在不同的文件中)。但是,我个人认为包含非类型支持是正确的。我只想添加:
int IComparable.CompareTo(object obj)
{
return CompareTo(obj as Artist);
}