随笔-219  评论-203  文章-0  trackbacks-9

为collection增加排序功能

 

注意到 CollectionBase.InnerList属性,这是一个protected 属性,得到一个包含了CollectionBase中的元素的ArrayList。

所以可以调用ArrayList.Sort()来实现排序。

 

using System;

 

public class Person {

      public Person(string name, int age) {

            this.Name = name;

            this.Age = age;

      }

      public string Name;

      public int Age;

}

 

public class People : System.Collections.CollectionBase {

      public int Add(Person p) {

            return List.Add(p);

      }

 

      public void SortByName() {

            System.Collections.IComparer sorter = new NameSortHelper();

            InnerList.Sort(sorter);

      }

      public void SortByAge() {

            System.Collections.IComparer sorter = new AgeSortHelper();

            InnerList.Sort(sorter);

      }

 

      private class NameSortHelper : System.Collections.IComparer {

            public int Compare(object x, object y) {

                  Person p1 = (Person) x;

                  Person p2 = (Person) y;

                  return p1.Name.CompareTo(p2.Name);

            }

      }

 

      private class AgeSortHelper : System.Collections.IComparer {

            public int Compare(object x, object y) {

                  Person p1 = (Person) x;

                  Person p2 = (Person) y;

                  if(p1.Age > p2.Age)

                        return 1;

                  if(p1.Age < p2.Age)

                        return -1;

                  return 0;

            }

      }

}

 

 

class App {

      [STAThread]

      static void Main(string[] args) {

            People people = new People();

            people.Add(new Person("John" , 30));

            people.Add(new Person("Bob" , 20));

            people.Add(new Person("Zeke" , 18));

           

            //people.SortByAge();

            people.SortByName();

 

            foreach(Person p in people) {

                  Console.WriteLine("{0} , {1}", p.Name, p.Age);

            }

      }

}

 

 

http://unboxedsolutions.com/sean/archive/2004/08/10/292.aspx

作者:峻祁连
邮箱:junqilian@163.com
出处:http://junqilian.cnblogs.com/
欢迎转载,请在文章页面明显位置给出原文链接。

 

 

 

posted on 2008-08-19 14:50 峻祁连 阅读(250) 评论(0) 编辑 收藏
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1271203 RYKPT9/6uCU=
MapGuide Developer Network--MapGuide开发者网络  



免责声明

本博客所有内容及信息,均为作者个人观点,并不代表本人所服务的公司的立场。本博客所有内容,仅供参考,对由其造成的文件损坏或信息丢失等一切后果,及由此而引发的任何损失,作者不承担任何责任。本博客提供的是即时更新的信息及观点,而非永久性的知识,加之作者的个人认知及观点亦在不断变化,因而本博客较早发布的内容并不可被视为作者的当前观点。凡经转载,请注明出处,并在页面明显处注明原始链接。

昵称:峻祁连
园龄:3年11个月
粉丝:18
关注:4

搜索

 

常用链接

最新随笔

我的标签

随笔分类

随笔档案

友情链接

最新评论

阅读排行榜

评论排行榜

推荐排行榜

Related Posts Plugin for WordPress, Blogger...