IComparable <t>未实施</t>

时间:2013-03-15 12:16:18

标签: c# icomparable

我已经从使用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>();

3 个答案:

答案 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);
}