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];
}
}
}
In this class I have an iterator.
It works like this:
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);
}
But I see that you can write foreach(int i in el), but how?