In this class I have an iterator.Code:class EventAwareList<T> : System.Collections.Generic.List<T> { public delegate void ListHandler(object sender , EventAwareList<T>.ListEventArgs<T> e); public event ListHandler AddEvent; public class ListEventArgs<U> : EventArgs { public int index; public U value; } public new void Add(T item) { base.Add(item); if (AddEvent != null) { ListEventArgs<T> addevArgs = new ListEventArgs<T>(); addevArgs.value = item; addevArgs.index = base.Count - 1; AddEvent(this, addevArgs); } } public new T this[int i] { get { return base[i]; } set { base[i] = value; if (AddEvent != null) { ListEventArgs<T> addevArgs = new ListEventArgs<T>(); addevArgs.value = base[i]; addevArgs.index = i; AddEvent(this, addevArgs); } } } public new System.Collections.Generic.IEnumerable<T> GetEnumerator() { for(int i = 0; i < base.Count ;++i) { yield return base[i]; } } }
It works like this:
But I see that you can write foreach(int i in el), but how?Code:EventAwareList<int> el = new EventAwareList<int>(); el.Add(2); el.Add(43); System.Collections.Generic.List<int> s; foreach (int i in el.GetEnumerator()) { Console.WriteLine(i); }



LinkBack URL
About LinkBacks



CornedBee