`
wangdeshui
  • 浏览: 257037 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    C#学习笔记整理-迭代器模式介绍

    什么是迭代器模式? 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候...

    设计模式(C#)之迭代器模式(Iterator Pattern)

    迭代器模式是软件设计模式中的一种行为模式,它在C#等面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户遍历一个聚合对象(如数组、集合或列表)的所有元素,而无需了解底层的实现细节。下面将详细...

    C#设计模式迭代器示例

    在C#中,迭代器模式的应用非常广泛,尤其是在处理集合类库时。本教程将深入讲解如何在C#中实现迭代器模式。 首先,让我们理解迭代器模式的基本组成。在C#中,迭代器通常包含以下组件: 1. **聚合对象(Aggregate)...

    迭代器模式Demo

    在Java、C#等面向对象语言中,迭代器模式被广泛使用。 迭代器模式主要包含以下角色: 1. **聚合角色(Aggregate)**:存储一组对象,提供创建迭代器的接口。 2. **迭代器角色(Iterator)**:负责遍历聚合中的元素...

    设计模式之迭代器模式

    - **显式迭代器**:在Java、C#等语言中,迭代器通常作为接口实现,程序员需要显式地创建迭代器对象并调用其方法进行遍历。 - **隐式迭代器**:在C++中,通过`begin()`和`end()`函数实现,迭代器通常隐含地与容器...

    第二十讲:迭代模式

    在Java、C#等面向对象编程语言中,迭代器模式是常用的一种行为设计模式,它允许我们遍历集合对象的元素,而无需暴露集合的内部结构。 在标题“第二十讲:迭代模式”中,我们可以理解这是一个教学系列的第20部分,...

    迭代器模式demo

    在Java、C#等面向对象编程语言中,迭代器模式被广泛应用于集合类库,如ArrayList、LinkedList等。这个"迭代器模式demo"可能是为了演示如何在实际代码中实现或使用迭代器模式。 在迭代器模式中,主要有四个角色: 1....

    c#代码介绍23种设计模式-16迭代器模式(附代码)

    1. 迭代器模式的介绍 迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中, 但这样的话,集合对象就...

    20050824pm--C#2.0 锐利体验系列课程(2):匿名方法、迭代器.pdf

    ### C#2.0 锐利体验系列课程(2):匿名方法、迭代器 #### 知识点一:匿名方法 ##### 匿名方法的引入 在C#2.0之前,即C#1.0版本中,委托实例化的语法较为繁琐,如需将事件处理器绑定至按钮点击事件,需要定义一个名...

    C#2_0迭代器

    在C#编程语言中,迭代器是一个非常重要的概念,尤其在C# 2.0版本中引入,极大地增强了对集合和数据流的操作能力。迭代器允许开发者定义自己的遍历方式,使得可以按照自定义的顺序访问集合中的元素,而无需暴露集合的...

    C# 2_0:使用匿名方法、迭代程序和局部类来创建优雅的代码

    C# 2_0:使用匿名方法、迭代程序和局部类来创建优雅的代码

    C#2.0 锐利体验系列课程(2):匿名方法、迭代器.pdf

    ### C#2.0 锐利体验系列课程(2):匿名方法、迭代器 #### 知识点一:匿名方法 在C#2.0中引入了一个非常实用且强大的特性——匿名方法(Anonymous Methods)。匿名方法允许开发人员定义一个没有名称的方法,这在很多...

    C#2.0 锐利体验系列课程(2):匿名方法、迭代器

    在C#编程语言中,匿名方法和迭代器是两个非常重要的特性,特别是在C#2.0版本中引入,极大地增强了代码的灵活性和可读性。接下来我们将深入探讨这两个概念。 **匿名方法** 匿名方法是在不定义单独的函数的情况下...

    16迭代器模式1

    在实际编程中,许多编程语言,如Java、C#等,都内置了对迭代器模式的支持,例如Java的`Iterable`接口和`Iterator`接口,使得使用迭代器模式更加便捷。通过这些内置机制,我们可以轻松地实现对集合的遍历,同时保持了...

    设计模式之迭代器模式(Iterator)

    在Java、Python、C#等面向对象语言中,迭代器模式都有其对应的应用。例如,在Java中,`Iterable`接口和`Iterator`接口就是实现迭代器模式的关键。`Iterable`接口定义了获取迭代器的方法`iterator()`,而`Iterator`...

    迭代器、分部类、索引器.

    在C#中,迭代器通过`yield return`语句实现。迭代器可以被用在自定义数据结构中,以便更方便地遍历它们的元素。例如,你可以创建一个迭代器方法,返回一个枚举器,该枚举器逐个返回序列中的元素。这样,即便数据结构...

    设计模式的迭代器模式的例子

    在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以方便地遍历集合中的所有元素。 迭代器模式的主要组件包括: 1. **聚合对象(Aggregate)**:包含一组相关或...

    C#射击类游戏:龙之战(源码)

    开发语言:C# 参考网络上流传的《勇者斗恶龙》游戏源码制作的一个射击类游戏,借用了《勇者斗恶龙》的游戏界面及部分源码。 整个游戏框架已基本完成,源码中采用了一些设计模式,有精美的游戏画面和详尽的代码注释,...

Global site tag (gtag.js) - Google Analytics