.NET集合:IEnumerable、IEnumerator、IQueryable及yield关键字的性能探究
1. IEnumerable与IEnumerator的比较
1.1 接口概述
IEnumerable和IEnumerator接口都可用于迭代,但方式不同。IEnumerable类型的对象知道如何遍历其所持有的集合,无论其内部结构如何,它有一个关键方法 GetEnumerator() ,该方法返回一个实现了IEnumerable接口的类的实例,通常使用 foreach 循环进行迭代,不过在迭代时它不记录位置。
IEnumerator类型的对象声明了两个方法 MoveNext() 和 Reset() ,还有一个属性 Current 用于获取正在枚举的列表中的当前项。 MoveNext() 方法移动到集合中的下一条记录并返回一个布尔值表示集合是否结束, Reset() 方法将位置重置到集合的第一项。枚举器会记住其当前位置,迭代时使用 while 循环。
1.2 性能测试步骤
1.2.1 创建测试类
添加一个名为 IEnumerableVsIEnumerable 的新类,并添加以下 using 语句:
using Benchmark
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



