迭代器模式

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。

 

<textarea cols="50" rows="15" name="code" class="c-sharp"> class Program { static void Main(string[] args) { MyArray&lt;int&gt; myArray = new MyArray&lt;int&gt;(); myArray.add(1); IEnumerator&lt;int&gt; enums = myArray.GetEnumerator(); while (!enums.checkFinished()) Console.Write(enums.next()); } } public interface IEnumerable&lt;T&gt; { IEnumerator&lt;T&gt; GetEnumerator(); } public interface IEnumerator&lt;T&gt; { T next(); bool checkFinished(); } public class MyArray&lt;T&gt; :IEnumerable&lt;T&gt;{ private List&lt;T&gt; array = new List&lt;T&gt;(); public void add(T val) { array.Add(val); } public List&lt;T&gt; Array { get { return array; } } public IEnumerator&lt;T&gt; GetEnumerator() { return new MyEnumerator&lt;T&gt;(this); } } public class MyEnumerator&lt;T&gt; : IEnumerator&lt;T&gt; { private MyArray&lt;T&gt; _myArray; private int index = 0; public MyEnumerator(MyArray&lt;T&gt; myArray) { _myArray = myArray; } public T next() { return _myArray.Array[index++]; } public bool checkFinished() { return _myArray.Array.Count == index; } }</textarea>

 

你可能感兴趣的:(迭代器模式)