• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#拾遗系列(6):迭代器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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. 输出


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#数字前补0发布时间:2022-07-10
下一篇:
c#保留小数点后位数的方法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap