深入探索迭代器:从泛型枚举器到高级迭代应用
1. 非泛型枚举器的问题
在编程实践中,实现 IEnumerator
接口操作 System.Object
类型时会遇到诸多问题:
- 性能损耗 :值类型的装箱和拆箱操作以及引用类型的转换都会带来性能开销。
- 内存占用 :频繁的装箱操作会大量占用托管堆。
- 类型不安全 :必须进行与 System.Object
类型的转换,导致类型不安全。
为解决这些问题,.NET Framework 提供了 IEnumerable
和 IEnumerator
接口的泛型版本。
2. 泛型枚举器
泛型枚举器通过使用泛型接口实现可枚举对象和枚举器,避免了上述非泛型枚举器的部分问题。
2.1 IEnumerable<T>
接口
可枚举的泛型对象实现 IEnumerable<T>
接口,其定义如下:
public interface IEnumerable<T> : IEnumerable {
IEnumerator<T> GetEnumerator();
}
由于 <