2013-08-22 164 views
0

我得到这个消息,因为我写了实现了IComparable类:不实现接口成员'System.Icomparable.CompareTo(object)'?

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.,我改变帕拉姆为对象,但仍然没有工作

回答

4

方法声明不放过一般的参数。它需要

int IComparable<Person>.CompareTo(Person p) 

没有一般的参数,编译器认为你试图实现非泛型接口IComparable

+0

还是得到了同样的错误 – user1804033

+0

@ user1804033什么样的错误是什么呢?你提供的代码示例编译得很好,如果你做了我建议的更改(自己验证) – JaredPar

+0

工作!我开始程序后错误消失了,非常感谢你! 顺便说一句,当实现接口时,我应该总是把InterfaceName.Method()? – user1804033

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; 
    } 
+0

嗨,它看起来还没有工作... – user1804033

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; 
    } 
} 
相关问题