1.前言
众所周知,完成一个软件功能,方法可能有很多种。从某种角度看,似乎只要能够实现这个功能,那么任务就完成了。刚开始写代码的时候,很多人都是这么想的,心里甚至还会自我鼓励,功能都搞定了,还管那么多干啥。
随着时间和水平的推进,学习到了一些新特性和方法,突然发现之前的代码还可以这样写。此时是选择回去重构之前的代码,还是不再追究、一晃而过?
必须重构。此文及后面一系列的文章的目的在于此,即学以致用,菜鸟的进阶肯定是从这里开始的。
C# 提供的很多特性,诸如:泛型、属性、异步方法、Lambda表达式等等,如果不用起来,就一直放在那里了,似乎也没什么影响。但是只要开始尝一下甜头,就会对之前的代码嗤之以鼻。当初抓破脑袋写了三天的功能,还不算调试排Bug的时间,现在只需要半小时就能搞定,通常也会具有如下优点:
- 简洁优雅
- 性能更高
- 耦合性低
今天先讲一讲迭代器。
2.迭代器简介
简单来说,迭代器的功能是对集合进行一些操作。
迭代器方法主要使用yield return 返回集合中的元素,一次一个。方法的返回类型定义为IEnumerable\IEnumerator,在返回后会记住当前位置,下次方法被调用时仍然从那个位置开始。
使用迭代器方法是通过foreach