IComparable接口实现自定义类型的排序
CompareTo(Object) 方法的实现必须返回有三个值之一
如下表中所示。
返回值 | 参数比较 |
---|---|
大于0 | x>y |
等于0 | x=y |
小于0 | x<y |
首先定义一个用于测试的Person类
class person : IComparable
{
public string Name { set; get; }
public int Age { set; get; } public override string ToString()
{
return "name: " + this.Name + " " + "age: " + this.Age;
}
}
接着使用第一种方法:CompareTo(Object) 方法来实现IComparable接口
public int CompareTo(object obj)
{
person s = obj as person; return this.Age.CompareTo(s.Age);
}
接着,进行第一次排序测试
class Program
{
static void Main(string[] args)
{
person[] ps = new person[] { new person() { Name = "gaoning", Age = }, new person() { Name = "laohuan", Age = }, new person() { Name = "lihong", Age = }, new person() { Name = "qinqi", Age = } }; Array.Sort(ps); foreach (var item in ps)
{
Console.WriteLine(item.ToString());
}
Console.ReadKey();
}
}
得出的结果:
可见,我们已经实现了自定义类型的排序。
咱们用另外一种写法来实现
public int CompareTo(object obj)
{
person s = obj as person; if (s.Age > this.Age)
{
return ;
}
else if (s.Age == this.Age)
{
return ;
}
else
{
return -;
}
}
测试完后的效果和第一次的一样,就不发了。
这样,我们就简单的实现了自定义类型的排序。这只是我初步学习的结果,如果有什么不足或者错误的地方,恳请各位指出