.NET基础学习(迭代器)

创建迭代器最常用的方法是对 IEnumerable 接口实现 GetEnumerator 方法

例如实现输出A-Z的实现:

 public class A
{
public System.Collections.IEnumerator GetEnumerator()
{
for (int i = 65; i <= 90; i++)
{
yield return (char)i;
}
}
}

 调用方法如下所示:GetEnumerator 方法的存在使得类型成为可枚举的类型,并允许使用foreach语句

 static void Main(string[] args)
{
foreach (char i in new A())
{
Console.Write(i);
}
}

foreach语句调用 实例.GetEnumerator() 并使用返回的枚举数来循环访问值。

运行结果图:

还可以使用命名的迭代器以支持通过不同的方式循环访问同一数据集合。例如,您可以提供一个按升序返回元素的迭代器,而提供按降序返回元素的另一个迭代器。迭代器还可以带有参数,以便允许客户端控制全部或部分迭代行为。下面的迭代器使用命名的迭代器 SampleIterator 实现 IEnumerable 接口:

 public class B
{
public System.Collections.IEnumerable SampleIterator(int start, int end)
{
for (int i = start; i <= end; i++)
{
yield return i;
}
}
}

 命名的迭代器的调用方法如下:

 static void Main(string[] args)
{
foreach (int i in new B().SampleIterator(1, 10))
{
Console.Write(i);
}
}

 运行结果图如下所示:

可以在同一个迭代器中使用多个yield语句,如下面的示例所示:

 public class C
{
public System.Collections.IEnumerator GetEnumerator()
{
yield return "博";
yield return "客";
yield return "园";
yield return "。";
}
}

 然后可以使用下面的foreach语句输出结果:

 static void Main(string[] args)
{
foreach (string s in new C())
{
Console.Write(s);
}
}

 运行结果:

资料来自MSDN,记录我的学习路径,忘记了也方便以后过来观看,记录自己的成长!

版权所有,转载请注明出处!

一切伟大的行动和思想,都有一个微不足道的开始。微不足道的我,正在吸取知识的土壤,希望能取得成功!不嫌弃我微不足道的,愿交天下好友!

原文地址:https://www.cnblogs.com/cmsdn/p/2286860.html