一个类,public class Person:IComparable ,其中写了一个方法。    int   IComparable.CompareTo(object obj)
    {
        Person p2 = (Person)obj;        if (this.FirstName.CompareTo(p2.FirstName) > 0)
            return 1;
        if (this.FirstName.CompareTo(p2.FirstName) < 0)
            return -1;
        if (this.FirstName.CompareTo(p2.FirstName) == 0)
            return 0;
    }
生成时候,系统报错:“Person.System.IComparable.CompareTo(object)”: 并非所有的代码路径都返回值。
为什么会这样呢?我觉得所有路径,都可以返回数值阿。
非常谢谢大家啊。

解决方案 »

  1.   

    虽然按代码的意思是都可以返回值..但在这里系统并不这样认为...因为你三个         if (this.FirstName.CompareTo(p2.FirstName) > 0) 
                return 1; 
            if (this.FirstName.CompareTo(p2.FirstName)  < 0) 
                return -1; 
            if (this.FirstName.CompareTo(p2.FirstName) == 0) 
                return 0; 都对应上面三种情况,但主的没有return..int   IComparable.CompareTo(object obj) 
        { 
            Person p2 = (Person)obj;         if (this.FirstName.CompareTo(p2.FirstName) > 0) 
                return 1; 
            if (this.FirstName.CompareTo(p2.FirstName)  < 0) 
                return -1; 
            if (this.FirstName.CompareTo(p2.FirstName) == 0) 
                return 0; 
            return 0;
        } 这样才行
      

  2.   

      int   IComparable.CompareTo(object obj)  
        {  
            Person p2 = (Person)obj;          if (this.FirstName.CompareTo(p2.FirstName) > 0)  
                return 1;  
            if (this.FirstName.CompareTo(p2.FirstName)   < 0)  
                return -1;  
            if (this.FirstName.CompareTo(p2.FirstName) == 0)  
                return 0;  
            return 0; 
        }  
    这样试试看..
      

  3.   

    后面的两个if前面加上个else。
      

  4.   

    int   IComparable.CompareTo(object obj)  
        {  
            Person p2 = (Person)obj;          if (this.FirstName.CompareTo(p2.FirstName) > 0)  
                return 1;  
            else if (this.FirstName.CompareTo(p2.FirstName)   < 0)  
                return -1;  
            else
                return 0;  
        }