用字符串实现IComparable

时间:2017-06-16 02:50:42

标签: c# string interface icomparable

我有类Employee,我需要实现IComparable并使用CompareTo方法按名称对员工进行排序。从我所看到的,我必须返回1,-1和0,但我如何使用字符串?

这就是我所拥有的。

--with-cc-opt="-std=c++11"

2 个答案:

答案 0 :(得分:1)

最简单的方法是将其传递给已经实现的比较方法。在这种情况下,由于您只需要比较两个字符串,您只需调用String.Compare

class Employee : IComparable<Employee>
{
    string name;
    string address;

    public int CompareTo(Employee obj) 
        => string.Compare(name, obj.name);    
}

您也可以使用name.CompareTo(obj.name),但是您需要担心name是否为空。根据{{​​1}}上的the MSDN article

  

一个或两个比较可以为空。根据定义,任何字符串(包括空字符串(“”))都会比较大于空引用;和两个空引用比较相等。

答案 1 :(得分:0)

简单:

        public int CompareTo(Employee obj)
        {
            if (name == obj.name)
            {
                return address.CompareTo(obj.address);
            }
            return name.CompareTo(obj.name);
        }