CollectionBase集合的基类
2011-03-12 08:54
183 查看
构造集合类,可以通过继承CollectionBase,而CollectionBase实现了IList、ICollection、IEnumerable接口。
IEnumerable接口实现了GetEnumerator()方法,实现了对结果的枚举。
IEnumerable接口实现了GetEnumerator()方法,实现了对结果的枚举。
//摘要: //公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。 [ComVisible(true)] [Guid("496B0ABE-CDEE-11d3-88E8-00902754C43A")] publicinterfaceIEnumerable { //摘要: //返回一个循环访问集合的枚举数。 // //返回结果: //可用于循环访问集合的System.Collections.IEnumerator对象。 [DispId(-4)] IEnumeratorGetEnumerator(); }
ICollection继承自IEnumerable接口,在些基础上添加了三个属性与一个方法。
intCount{get;} boolIsSynchronized{get;} objectSyncRoot{get;} voidCopyTo(Arrayarray,intindex);
IList接口实现了以上二个接口又添加了新的属性与方法
intAdd(objectvalue);
voidClear();
boolContains(objectvalue);
intIndexOf(objectvalue);
voidInsert(intindex,objectvalue);
voidRemove(objectvalue);
voidRemoveAt(intindex);
objectthis[intindex]{get;set;}
boolIsReadOnly{get;}
boolIsFixedSize{get;}
现在回到CollectionBase类中,首先看一下类的定义
publicabstractCollectionBase:IList,ICollection,IEnumerable
{
//构造函数
protectedCollectionBase();
protectedCollectionBase(intcapacity);
//属性定义
publicintCapacity{get;set;}
publicintCount{get;}
protectedArrayListInnerList{get;}
protectedIListList{get;}
//方法定义
publicvoidClear();
publicIEnumerableGetEnumerator();
protectedvirtualvoidOnClear();
protectedvirtualvoidOnClearComplete();
protectedvirtualvoidOnInsert(intindex,objectvalue);
protectedvirtualvoidOnInsertComplete(intinedx,objectvalue);
protectedvirtualvoidOnRemove(intindex,objectvalue);
protectedvirtualvoidOnRemove(intindex,objectvalue,objectnewValue);
protectedvirtualvoidOnSet(intindex,objectoldValue,objectnewValue);
protectedvirtualvoidOnSetComplete(intindex,objectoldValue,objectnewValue);
protectedvirtualvoidOnValidate(objectvalue);
publicvoidRemoveAt(intindex);
}
自定义集合类时可以扩展CollectionBase
publicsealedclassMyCollection:CollectionBase
{
//这里可以自定义自己的索引包含添加删除操作
}