zoukankan      html  css  js  c++  java
  • C#拾遗系列(6):迭代器

    1. 示例:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Collections;

     

    namespace NetTest

    {

      public  class TestIteration

        {

     

            public void Test()

            {

                SevenColor colorIteration = new SevenColor();

                foreach (string p in colorIteration)

                {

                    Console.Out.WriteLine(p);

                }

                Console.Out.WriteLine("-------------Desc-------------------");

                foreach (string c in colorIteration.DescColorIteration(1, 5))

                {

                    Console.Out.WriteLine(c);

                }

                Console.Out.WriteLine("--------------multi yield---------");

                foreach (string c in colorIteration.GetMutipleYied())

                {

                    Console.Out.WriteLine(c);

                }

            }

        }

     

        public class SevenColor : IEnumerable

        {

            string[] mColor={"red","orange","yellow","green","cyan","blue","purple"};

            #region IEnumerable Members

            /*

            迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。

            可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,

            并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}

            */

            public IEnumerator GetEnumerator()

            {

                for (int i = 0; i < mColor.Length; i++)

                {

                    yield return mColor[i];

                }

            }

            #endregion

     

            //注意,这里返回的是IEnumerable

            public System.Collections.IEnumerable DescColorIteration(int start, int end)

            {

                for (int i = 0; i <=end; i++)

                {

                    yield return mColor[end-i];

                }

            }

            //在 foreach 循环的每次后续迭代(或对 IEnumerator.MoveNext 的直接调用)中,

            //下一个迭代器代码体将从前一个 yield 语句之后开始,并继续下一个语句直至到达迭代器体的结尾或遇到 yield break 语句

            public IEnumerable GetMutipleYied()

            {

                yield return "hello";

                yield return "I am";

                yield return "Jack";

                yield return "wang";

            }

        }

    }

     

    2. 输出

    image

    扫码关注公众号,了解更多管理,见识,育儿等内容

    作者: 王德水
    出处:http://www.cnblogs.com/cnblogsfans
    版权:本文版权归作者所有,转载需经作者同意。

  • 相关阅读:
    Objective-C写出Json文件(可作配置文件)
    关于快速排序的部分内容
    关于折半查找排序的部分内容
    异步下载网络图片
    pytest(5):setup/teardown框架结构
    pytest(4):用例参数化
    pytest(3):pytest运行参数介绍
    pytest(2):使用pycharm运行pytest
    pytest(1):pytest的安装与使用
    pytest文档4-Allure报告清除上一次数据
  • 原文地址:https://www.cnblogs.com/cnblogsfans/p/1222099.html
Copyright © 2011-2022 走看看