打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IEnumerable接口和迭代器介绍

一、概述

1.迭代器是可以返回相同类型的值的有序序列的一组代码片段。

2.迭代器可以用作方法,get 访问器

3.使用yield return 返回每个值,yield break 可以中止迭代

4.可以在一个类中使用多个迭代。

二、构建自己的迭代器

如何构建自己的迭代器呢。

1、最常用的方法是实现IEnumerable接口的GetEnumerator() 方法。

如下:

public IEnumerator GetEnumerator()  
{  
    for (int i = 0; i < 100; i++)  
    {  
        yield return "耶稣的迭代器,序号:"+ i + " -----!";  
    }  

此类必须继承接口IEnumerable.即:public class TRJEnumerable:IEnumerable

这样,就实现了自己的一个迭代器,可以在别的地方应用了.

    TRJEnumerable trjEnumerable = new TRJEnumerable();

            foreach (string s in trjEnumerable)
            {
                Console.WriteLine(s);
            }

2、可以不继承接口IEnumerbale,但在类的内部要实现一个返回IEnumerable类型的方法。

如下:

public class TRJIEnumerbaleDemon1
   {
       public IEnumerable SampleIterator()
       {
           yield return "耶稣:1";
           yield return "耶稣:2";
           yield return "耶稣:3";
           yield break;
           yield return "耶稣:4";
       }
   }

调用的时候:

 TRJIEnumerbaleDemon1 trjiEnumerbaleDemon1 = new TRJIEnumerbaleDemon1();

            foreach (string value in trjiEnumerbaleDemon1.SampleIterator())
            {
                Console.WriteLine(value);
            }

当然,这个自定义方法可以带有参数。比如:想对同一数据源执行2种不同的访问形式,可以提供一个按升序返回元素的迭代器,而提供按降序返回元素的另一个迭代器。


       /// <summary>
       /// 升序迭代
       /// </summary>
       /// <param name="start"></param>
       /// <param name="end"></param>
       /// <returns></returns>
       public IEnumerable ASCIterator(int start,int end)
       {
           if (start<=end)
           {
               for(int i=start;i<=end;i++)
               {
                   yield return "对应的耶稣是:" + i;
               }
           }
       }

这样可以随心所欲的控制返回的值.

3、应用

最近在做一个小工具,数据源是一些类型,比如:int ,long,string,byte,zcInt,zcBool等。

可以把这样类型配置在一个xml中,然后程序启动的时候读取。自定义自己的类型迭代器,返回自己的类型值。

4、对接口IEnumerable和IEnumerator的区别不是怎么了解,但大致看了一下:

IEnumerable 接口只有方法GetIEnumerator()这个方法。

IEnumerator接口有一个属性,2个方法:MoveNext(),Reset(),Current。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
迭代器
.NET 迭代器
C# IEnumerable和IEnumerator的区别,如何实现
C#设计模式(16)——迭代器模式(Iterator Pattern)
利用C#实现 Iterator 迭代器模式
yield关键字
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服