• .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,记录我的学习路径,忘记了也方便以后过来观看,记录自己的成长!

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

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

  • 相关阅读:
    C#处理不同的JSON数据
    如何查看当前工程,已经安装的nuget包?
    什么是nuget?nuget包是如何管理
    Visual Studio 2015创建ASP.NET MVC流程
    Web API和Web Service
    TCP和IP的三次握手和第四次挥手
    http和https的区别
    HTTP协议详细介绍
    MVC流程图
    简述 三次握手、四次挥手的流程?
  • 原文地址:https://www.cnblogs.com/cmsdn/p/2286860.html
Copyright © 2020-2023  润新知