/* * C# Program to Implement for-each in Inteface */ using System; using System.Collections; class GrowableArray : IEnumerable { object[] a; public GrowableArray(int size) { a = new object[size]; } public GrowableArray() : this(8) {} void Grow() { object[] b = new object[2 * a.Length]; Array.Copy(a, b, a.Length); a = b; } public object this[int i] { set { if (i >= a.Length) Grow(); a[i] = value; } get { if (i >= a.Length) Grow(); return a[i]; } } public IEnumerator GetEnumerator() { return new GAEnumerator(a); } class GAEnumerator : IEnumerator { object[] a; int i = -1; public GAEnumerator(object[] a) { this.a = a; } public object Current { get { return a[i]; } } public void Reset() { i = -1; } public bool MoveNext() { do i++; while (i < a.Length && a[i] == null); if (i == a.Length) return false; else return true; } } } class Test { public static void Main() { GrowableArray a = new GrowableArray(2); a[0] = 0; a[1] = 1; a[3] = 3; foreach (object x in a) Console.Write(" " + x); } /* Demonstrating foreach Interface by Displaying Numbers from 100 to 105 : 100 101 102 103 104 105