自定义迭代器使用foreach

时间:2022-04-22
本文章向大家介绍自定义迭代器使用foreach,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

 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接口了。