我有类Employee,我需要实现IComparable并使用CompareTo方法按名称对员工进行排序。从我所看到的,我必须返回1,-1和0,但我如何使用字符串?
这就是我所拥有的。
--with-cc-opt="-std=c++11"
答案 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);
}