static void PrintCollection(IMyEnumerator <object> coll, int count) { for (int i = 0; i < count; i++) { Console.WriteLine(coll.GetItem(i)); } }
static void Main(string[] args) { //使用接口IMyEnumerable代替MyList IMyEnumerable list = new MyList(); //得到迭代器,在循环中针对迭代器编码,而不是集合MyList IMyEnumerator enumerator = list.GetEnumerator(); for (int i = 0; i < list.Count; i++) { object current = enumerator.Current; enumerator.MoveNext(); } while (enumerator.MoveNext()) { object current = enumerator.Current; } //ICollection<object> list = new List<object>(); //IEnumerator enumerator = list.GetEnumerator(); //for (int i = 0; i < list.Count; i++) //{ // object current = enumerator.Current; // enumerator.MoveNext(); //} //while (enumerator.MoveNext()) //{ // object current = enumerator.Current; //} }
public IMyEnumerator GetEnumerator() { if (myEnumerator == null) { myEnumerator = new MyEnumerator(this); } return(myEnumerator); }
private bool OverlappedWithAny(IMyEnumerator <GridSquare> squares) { for (var square = squares.First(); square != null; square = squares.Next()) { if (square.Rect.IsOverlappingWith(Rect)) { return(true); } } return(false); }
static void Main(string[] args) { var seq = new FibonacciSequence(7); IMyEnumerator <int> iter = seq; while (iter.MoveNext()) { Console.Write(iter.Current + " "); } iter.Reset(); Console.ReadLine(); }
static void Main() { var strings = new MyCollection <string>(); strings.AddItem("One"); strings.AddItem("Two"); IMyEnumerator <string> collStrings = strings; IMyEnumerator <object> collObjects = collStrings; // Ковариантность в действии PrintCollection(collObjects, 2); Console.ReadKey(); }