您的位置:首页 > 其它

用IComparable来实现可排序的集合

2005-12-28 15:18 435 查看
作者:Mahesh Chand
原文地址:http://www.c-sharpcorner.com/UploadFile/mahesh/SortableArrays10212005115603AM/SortableArrays.aspx?ArticleID=d374d179-08e9-4473-b7e4-1991fad8affa

.NET Framework类库中提供了几个支持在集合中有追加功能的接口,比如:ICollection,IList和IComparable。

实现 IComparable

IComparable接口用来支持在集合中排序。它有一个函数——CompareTo。当你设计分类对象时,你必须实现IComparable的CompareTo方法。

比如,我做一个Developer类来继承IComparable。

public class Developer : IComparable
public int CompareTo(object obj)
public int CompareTo(object obj)

public enum SortFilter

private static SortFilter sortingBy = SortFilter.FirstName;
public static SortFilter SortingBy
public int CompareTo(object obj)

正如你所看到的上面的代码,我为每一个分类条件加入一个case语句。现在我的类准备好了支持排序。所有我做的工作是:建立一个Developer对象的ArrayList,设置分类过滤器(SortFilter),调用Sort方法。

下面的代码生成一个Developer类型的ArrayList:

private ArrayList GetList()

下面的代码设置以"FirstName"来分类,调用ArrayList的Sort方法。现在ArrayList将返回分类结果。

ArrayList list = GetList();
Developer.SortingBy = (SortFilter)Enum.Parse(typeof(SortFilter), "FirstName");
list.Sort();
排序顺序

现在你可能还要在你的对象中加入排序的顺序(升序还是降序)。为了完成这个,我加入一个SortOrder枚举:

public enum SortOrder
private static SortOrder sortingOrder = SortOrder.Ascending;
public static SortOrder SortingOrder
public int CompareTo(object obj)
Developer.SortingOrder = (SortOrder)Enum.Parse(typeof(SortOrder), "Descending");
list.Sort();

原文页面有代码下载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐