using System; using System.Collections; namespace ClassExamples { class ListMapping { delegate int Foo (int x); static ArrayList Map (Foo f, ArrayList list) { ArrayList result = new ArrayList(); foreach (int element in list) { result.Add(f((int) element)); } return result; } static int inc(int x) { return x+1; } static int sqr(int x) { return x*x; } public static void Main() { Foo f = new Foo(inc); f += sqr; ArrayList aList = new ArrayList(); aList.Add(1); aList.Add(2); aList.Add(3); Console.WriteLine("--- Before Map---"); Console.Write("["); foreach (int element in aList) { Console.Write(element); Console.Write(", "); } Console.WriteLine("]"); ArrayList newList = Map(f, aList); Console.WriteLine("--- After Map---"); Console.Write("["); foreach (int element in newList) { Console.Write(element); Console.Write(", "); } Console.WriteLine("]"); } } }