【问题标题】:Implement IComparable with strings用字符串实现 IComparable
【发布时间】:2017-06-16 02:50:42
【问题描述】:

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

这就是我所拥有的。

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

    public int CompareTo(Employee obj) 
    {
        Employee person = obj;
    }
}

【问题讨论】:

标签: c# string interface icomparable


【解决方案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 是否可能为空。根据the MSDN articleString.Compare

一个或两个比较数可以为空。根据定义,任何字符串,包括空字符串 (""),都比较大于空引用;并且两个空引用相互比较。

【讨论】:

  • Does => 表示更改为?
  • 这只是单命令方法的简写。它的技术名称是“表达式主体成员”
  • 和 { return ...; 意思一样}
【解决方案2】:

简单:

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

【讨论】:

  • 我不需要使用地址
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
相关资源
最近更新 更多