使用ICompare

时间:2017-11-19 15:35:01

标签: c# arrays class sorting icomparer

这是我在这里的第一个问题,所以当我做错事时,请这么善良,只是说出来。所以。我在教科书中找到了这个。它是一个对象数组排序程序的类。这是我需要的东西,但它在书中解释得很糟糕,我无法巧妙地解决它。那么有人可能会为我详细解释一下吗?这对我有帮助。

class Person : IComparable                     
{
    private string name;
    public Person()
    {
        name = "EMPTY";
    }
    public Person (string nm)
    {
        name = nm;
    }

    public string NAME
    {
        get
        {
            return name;
        }
    }
    public int CompareTo( object oneObject)   
    {
        Person comparePerson = (Person)oneObject;             
        return (name.CompareTo(comparePerson.name));    
    }
    public override string ToString()
    {
        return "Name of the Person: " + name;
    }}

1 个答案:

答案 0 :(得分:0)

此代码是实现IComparable接口的示例。如果希望在数组上使用Sort()方法,则可以使用它,其中实例不是值(类,结构)。 这部分代码描述了计算机的排序原则,它应该如何对Person实例的数组进行排序:

1.    public int CompareTo( object oneObject)   
2.        {
3.            Person comparePerson = (Person)oneObject;             
4.            return (name.CompareTo(comparePerson.name));    
5.        }

第3行Cast参数(将与当前实例进行比较)到Person类。这是不安全的,因为如果oneObject不是,那么你可以获得InvalidCastException 人类。

在第4行比较当前实例的NameoneObject参数的名称 Properti Name是字符串。 String具有IComparable接口的实现,您可以使用它。

当你在Array上调用Sort()方法时,它会一对一地比较元素(使用CopareTo(arg)),并根据结果进行排列。

相关问题