using System; public class X { public int p; public delegate void TestDelegate (); static long sum_i, sum_k, sum_p; public int Test () { TestDelegate d = null; for (int i = 1; i <= 5; i++) { int k = i; TestDelegate temp = delegate { Console.WriteLine ("i = {0}, k = {1}, p = {2}", i, k, p); sum_i += 1 << i; sum_k += 1 << k; sum_p += 1 << p; p += k; }; temp (); d += temp; } Console.WriteLine ("SUM i = {0}, k = {1}, p = {2}", sum_i, sum_k, sum_p); Console.WriteLine (); if (sum_i != 62) return 1; if (sum_k != 62) return 2; if (sum_p != 35168) return 3; sum_i = sum_k = sum_p = 0; d(); Console.WriteLine ("SUM i = {0}, k = {1}, p = {2}", sum_i, sum_k, sum_p); Console.WriteLine (); if (sum_i != 320) return 4; if (sum_k != 62) return 5; if (sum_p != 1152385024) return 6; return 0; } public static int Main () { X x = new X (); x.p = 5; int result = x.Test (); if (result != 0) Console.WriteLine ("ERROR: {0}", result); else Console.WriteLine ("OK"); return result; } }