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
    版权:本文版权归作者所有,转载需经作者同意。

  • 相关阅读:
    Apache中Cookie长度的设置 414 request-uri too large apache
    URL中文参数,JSON转换,PHP赋值JS
    PHP通过JSON给JS赋值;JS通过JSON给PHP传值
    PHP限制上传文件大小
    PHP 类中使用全局变量和全局常量
    利用span设置文字固定宽度
    Linux用户管理
    DropZone(文件上传插件)
    rest_framework基础
    RESTful规范
  • 原文地址:https://www.cnblogs.com/cnblogsfans/p/1222099.html
Copyright © 2011-2022 走看看