C#自定义MyArrayList实现IEnumerable和IEnumerator

4星 · 超过85%的资源 需积分: 35 11 下载量 30 浏览量 更新于2024-09-12 1 收藏 5KB TXT 举报
在C#编程中,自建类实现集合接口是一种常见的设计模式,特别是当需要定制或扩展现有集合的行为时。本文档主要介绍如何创建一个名为`MyArrayList`的自定义集合类,该类实现了`IEnumerable`和`IEnumerator`接口,这两个接口是.NET框架中的两个关键接口,用于处理可枚举的集合。 首先,`MyArrayList`类内部维护一个私有成员变量`obj`,这是一个object类型的数组,用于存储集合元素。另外,有两个计数器变量:`count`用于记录当前数组中的元素数量,初始化为0;`index`用于追踪遍历过程中的索引位置,初始值为-1,防止在首次访问时出现索引越界错误。 1. **Count属性**: `Count`属性是一个公开的只读属性,通过`get`访问器返回集合内的元素总数。当调用这个属性时,它会返回`count`的值,提供对集合大小的便捷访问。 2. **构造函数**: - `MyArrayList()` 是无参构造函数,用于初始化一个空的数组,`count`默认为0。 - `MyArrayList(int index)` 是带参数构造函数,接收一个整数作为参数,用于指定数组的初始长度,从而创建一个预先分配适当大小的数组。 3. **add(object o) 方法**: 此方法负责将一个新元素`o`添加到集合的末尾,并根据需要动态扩展数组。如果数组已满(`count`等于`obj.Length`),则会创建一个新的数组,将原数组中的元素复制到新数组,并将新元素插入。最后返回新元素在数组中的位置。 4. **IEnumerator 和 IEnumerable 接口实现**: - `MyArrayList`类通过继承`IEnumerable`接口,表明它可以被枚举(foreach循环可以遍历)。这意味着你可以使用`foreach`语句来迭代集合中的每个元素。 - 同时,由于实现了`IEnumerator`接口,意味着`MyArrayList`还提供了对单个元素的逐个访问,可以通过`IEnumerator`的`Current`属性和`MoveNext()`方法进行操作。这允许更底层的迭代控制,比如在特定条件满足时停止迭代。 通过这些实现,`MyArrayList`提供了一种灵活的方式来管理自定义的动态数组,允许添加、删除和获取元素,同时也支持标准的集合操作,如计数和清空。这种自定义集合类对于需要特殊功能或性能优化的应用场景非常有用,例如处理大量数据或需要复杂逻辑的元素管理。