前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义迭代器使用foreach

自定义迭代器使用foreach

作者头像
^_^肥仔John
发布2018-01-18 11:02:35
5930
发布2018-01-18 11:02:35
举报
文章被收录于专栏:偏前端工程师的驿站

  foreach遍历集合好处很多,因为.net framework在foreach中已经做了try...catch和dispose的操作。那么如果想自定义一个集合并且该集合能使用foreach来遍历,一般做法是实现System.Collections.IEnumerable和System.Collections.IEnumerator接口。其实只要在集合类中实现无参数的返回IEnumerator的GetEnumerator方法就可以了。如下面代码

代码语言:javascript
复制
 1 public class MyList
 2 {
 3    private string[] list=null;
 4    public MyList(string[] sArg)
 5   {
 6      list = sArg;
 7   }
 8    public int Count{get{return list.Length;}}
 9    public IEnumerator GetEnumerator()
10   {
11      return new MyListEnumerator(list);
12   }
13 }
14 
15 public class MyListEnumerator:IEnumerator
16 {
17    private string[] list=null;
18    private int index=-1;
19    
20    public MyListEnumerator(string[] sArg)
21    {
22       list = sArg;
23    }
24 
25    public string Current{get{return list[index];}}
26    public bool MoveNext()
27    {
28       bool result = false;
29       if(index+1<list.Length)
30       {
31          ++index ;
32          result=true;
33       }
34       return result;
35     }
36 }

这样MyList就可以通过foreach来遍历了。如果要用Linq那么MyList就要实现IEnumerable接口了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-12-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档