| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1260 人关注过本帖, 1 人收藏
标题:自定义集合类
只看楼主 加入收藏
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
结帖率:100%
收藏(1)
 问题点数:0 回复次数:0 
自定义集合类
在我们编程的时候经常会用到自定义的class,有的时候需要用到这个class的集合,在实际操作中,仅仅使用数组或List<>不能全面的实现我们所需要的功能,下面介绍一种比较简单好用的写法

程序代码:
    //在这里继承的IComparable是为了实现集合的Sort()功能
    class UserDate : IComparable
    {
        public UserDate(string key, string value)
        {
            this.Key = key;
            this.Value = value;
        }
        string _key = string.Empty, _value = string.Empty;

        public string Key
        {
            get { return _key; }
            set { _key = value; }
        }

        public string Value
        {
            get { return _value; }
            set { _value = value; }
        }

        #region IComparable 成员

        public int CompareTo(object obj)
        {
            UserDate compDate = obj as UserDate;
            return this.(compDate.Key);
        }

        #endregion
    }
//关键是要继承CollectionBase,大家可以去看一下继承了CollectionBase类之后,这个集合有了很多的方法
    class UserDateCollection : CollectionBase
    {
        public UserDate this[int index] { get { return (UserDate)List[index]; } set { List[index] = value; } }

        //在这里可以做很多事件,比如像Hashtable一样,同样的key只能出现一次
        //int index = this.IndexOf(value.Key); if (index != -1) { throw new Exception("...");}
        //简单解释一下吧,先检查这个集合是不是有同样的key出现,如果有,则返回一个错误,实际使用时请配合try{}
        public void Add(UserDate value)
        {
            List.Add(value);
        }
        //这里写法比较灵活,按照自己的思路实现在集合中快速的查找想应的数据
        public int Index(string key)
        {
            for (int i = 0; i < this.Count; i++)
            {
                if (this[i].Key == key)
                    return i;
            }
            return -1;
        }
    }
搜索更多相关主题的帖子: 定义 
2010-04-07 09:02
快速回复:自定义集合类
数据加载中...
 
   



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

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