不实现接口成员'System.Icomparable.CompareTo(object)'?

时间:2013-08-22 16:49:45

标签: c#

我得到了这条消息,因为我写了一个实现了Icomparable的类:

class Person: IComparable<Person>
    {
        public int age{get;set;}
        public String name { get; set; }

        int IComparable.CompareTo( Person p )
        {
            if (this.age > p.age)
                return 1;
            else if (this.age == p.age)
                return 0;
            else
                return -1;

        }

    }

无法弄清楚其中有什么问题,任何人都有什么好主意吗?

P.S。,我把param变成了对象,但仍然没有工作

3 个答案:

答案 0 :(得分:4)

方法声明不使用泛型参数。它必须是

int IComparable<Person>.CompareTo(Person p)

如果没有泛型参数,编译器会认为您正在尝试实现非泛型接口IComparable

答案 1 :(得分:3)

class Person : IComparable<Person>
{
    public int age { get; set; }
    public String name { get; set; }

    public int CompareTo(Person other)
    {
        if (age > other.age)

        { return 1; }
        if (age == other.age)
        { return 0; }
        return -1;
    }
}

答案 2 :(得分:0)

这是您的实现应该是什么样子。

public int CompareTo(object obj)
    {
        Person p = obj as Person;
        if (this.age > p.age)
            return 1;
        else if (this.age == p.age)
            return 0;
        else
            return -1;
    }