| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 625 人关注过本帖
标题:IComparable 接口的秒用?(排序)
只看楼主 加入收藏
w471182722
Rank: 1
等 级:新手上路
帖 子:34
专家分:5
注 册:2009-6-20
结帖率:100%
收藏
 问题点数:0 回复次数:3 
IComparable 接口的秒用?(排序)
今天发现了一个新的排序方法,很简单实用!仅供参考:

可以对任何类型的值进行排序。

using System;
using System.Collections.Generic;
using System.Text;

namespace 按类排序_接口_
{
    class Program
    {
        static void Main(string[] args)
        {
            Student []arr=new Student [5];
            arr[0] = new Student("张三",53);
            arr[1] = new Student("李四", 35);
            arr[2] = new Student("王五", 45);
            arr[3] = new Student("马六", 55);
            arr[4] = new Student("钱七", 53);
            Array.Sort(arr);
            foreach (Student i in arr )
            {
                Console.WriteLine(i); //ToString方法再此处调用
            }
            Console.Read();
        }
    }
    class Student:IComparable
    {
        private string _name;
        private int _age;
        public Student(string name,int age)
        {
            _name = name;
            _age = age;
        }
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        public int CompareTo(object right)
        {
            if(!(right is Student ))
            {
                throw new ArgumentException("参数必须为Student类型");
            }
            return _(((Student )right )._name );
        }
        /// <summary>
        /// 重载ToString方法
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return _name;
        }
    }
}

打印效果:
搜索更多相关主题的帖子: 排序 IComparable 接口 
2009-07-28 19:57
NTYLWJ
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:191
专家分:698
注 册:2008-12-2
收藏
得分:0 
学习。
2009-07-28 20:07
Kiss_零
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:164
专家分:125
注 册:2008-11-21
收藏
得分:0 
《C#入门经典》里面有类似的示例
2009-07-29 09:32
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
呵呵,这么显示接口还是对字符串的排序,
默认Array.Sort(arr);方法中只接收一个字符串类型的排序
return _(((Student )right )._name );方法中限定只对传来的Student中的_name排序.

我给你们提供一个好玩一点的,

 #region IComparable 成员
        int (object right)
        {
            if (!(right is Student))
            {
                throw new ArgumentException("参数必须为Student类型");
            }
             return ((Student)right)._age<_age?1:-1;
        }
#endregion
((Student)right)._age<_age?1:-1; 对_age的递增排序  若以">"为递减排序.
以便大家对自定义结构排序方便.

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-07-29 10:54
快速回复:IComparable 接口的秒用?(排序)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028421 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved