zoukankan      html  css  js  c++  java
  • CollectionBase集合的基类

    构造集合类,可以通过继承CollectionBase,而CollectionBase实现了IList、ICollection、IEnumerable接口。

    IEnumerable接口实现了 GetEnumerator()方法,实现了对结果的枚举。

        // 摘要:
        //     公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。
        [ComVisible(true)]
        [Guid("496B0ABE-CDEE-11d3-88E8-00902754C43A")]
        public interface IEnumerable
        {
            // 摘要:
            //     返回一个循环访问集合的枚举数。
            //
            // 返回结果:
            //     可用于循环访问集合的 System.Collections.IEnumerator 对象。
            [DispId(-4)]
            IEnumerator GetEnumerator();
        }
    ICollection 继承自IEnumerable接口,在些基础上添加了三个属性与一个方法。
              int Count { get; }
              bool IsSynchronized { get; }
               object SyncRoot { get; }
    
              void CopyTo(Array array, int index);
    IList接口实现了以上二个接口 又添加了新的属性与方法 
    int Add(object value);
    
    void Clear();
    
    bool Contains(object value);
    
    int IndexOf(object value);
    
    void Insert(int index, object value);
    
    void Remove(object value);
    
    void RemoveAt(int index);
    
    object this[int index] { get; set; }
    
    bool IsReadOnly { get; }
    
    bool IsFixedSize { get; }
     
    现在回到CollectionBase类中 ,首先看一下类的定义
    public abstract CollectionBase : IList, ICollection, IEnumerable
    {
         //构造函数
         protected CollectionBase();
         protected CollectionBase(int capacity);
     
         //属性定义
    public int Capacity{get; set;}
    public int Count{get;}
    protected ArrayList InnerList{get;}
    protected IList List{get;}
    //方法定义
    public void Clear();
    public IEnumerable GetEnumerator();
    protected virtual void OnClear();
    protected virtual void OnClearComplete();
    protected virtual void OnInsert(int index, object value);
    protected virtual void OnInsertComplete(int inedx, object value);
    protected virtual void OnRemove(int index, object value);
    protected virtual void OnRemove(int index, object value, object newValue);
    protected virtual void OnSet(int index, object oldValue, object newValue);
    protected virtual void OnSetComplete(int index, object oldValue, object newValue);
    protected virtual void OnValidate(object value);
    public void RemoveAt(int index);
    }
    自定义集合类时可以扩展CollectionBase
    public sealed class MyCollection : CollectionBase
    {
    //这里可以自定义自己的 索引 包含 添加 删除 操作
     
    }
    
  • 相关阅读:
    python安装
    实现node服务器
    VSCode集成tomcat及使用方法
    CommonJS规范
    Bootstrap 笔记
    vue笔记
    jgGrid模板添加
    vue组件中的data
    解析DNS
    StaticResource
  • 原文地址:https://www.cnblogs.com/chenqingwei/p/1982013.html
Copyright © 2011-2022 走看看