迭代器,是一个连续的集合,出现多个yield return其实就是将这多个的yield return元素按照出现的顺序存储在迭代器的集合中而已。形如下面的形式:
复制代码 代码如下:
public class CityCollection : IEnumerable<string>
{
string[] _Items = new string[] { "黑龙江", "吉林", "辽宁", "山东", "山西", "陕西", "河北", "河南", "湖南", "湖北", "四川", "广西", "云南", "其他" };
IEnumerator<string> IEnumerable<string>.GetEnumerator()
{
for (int i = 0; i < _Items.Length; i++)
{
yield return _Items[i];
yield return string.Format("Index:{0}", i);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
for (int i = 0; i < _Items.Length; i++)
{
yield return _Items[i];
}
}
}
而返回的迭代结果就是这样的:
复制代码 代码如下:
黑龙江
Index:0
吉林
Index:1
辽宁
Index:2
山东
Index:3
山西
Index:4
陕西
Index:5
河北
Index:6
河南
Index:7
湖南
Index:8
湖北
Index:9
四川
Index:10
广西
Index:11
云南
Index:12
其他
Index:13
每一条yield return都是迭代器中的一个元素。