4

我已经从 using 更改IComparableIComparable<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>();
4

3 回答 3

3

您必须确保您定义的项目Artist编译时没有错误。否则,您的其他项目将不会接受更改,并且仍然认为ArtistimplementsIComparable而不是IComparable<T>. 那是您收到编译时错误的时候:

“RecordCollection.Artist”未实现接口成员“System.IComparable.CompareTo(object)”

也没有技术需要实施CompareTo(object),它不会解决你的问题。

于 2013-03-15T12:38:18.703 回答
1

如果您复制并粘贴了该错误,看起来您应该CompareTo像这样实现:

public int CompareTo(object other)
{
    if (other == null) return 1;
        else
    return 0;
}
于 2013-03-15T12:34:05.577 回答
1

消息:

“RecordCollection.Artist”未实现接口成员“System.IComparable.CompareTo(object)”

清楚地表明它认为你的类仍然声明它在IComparable某个地方实现。您可能想找到它(它可能在不同的文件中partial class)。但是,我个人认为包含非类型化支持是正确的。我只想补充:

int IComparable.CompareTo(object obj)
{
    return CompareTo(obj as Artist);
}
于 2013-03-15T12:34:11.497 回答