IComparable接口实现自定义类型的排序

CompareTo(Object) 方法的实现必须返回有三个值之一
如下表中所示。
返回值参数比较
大于0x>y
等于0x=y
小于0x<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 = 21 }, new person() { Name = "laohuan", Age = 20 }, new person() { Name = "lihong", Age = 22 }, new person() { Name = "qinqi", Age = 19 } };

            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 1;
    }
    else if (s.Age == this.Age)
    {
         return 0;
    }
    else
    {
        return -1;
    }
}

测试完后的效果和第一次的一样,就不发了。
这样,我们就简单的实现了自定义类型的排序。这只是我初步学习的结果,如果有什么不足或者错误的地方,恳请各位指出。

转载于:https://www.cnblogs.com/g1mist/archive/2013/04/28/3050148.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值