C# Brainteaser print
Here's some code using the anonymous method feature of C# 2. What does it do?
using System;
using System.Collections.Generic;
class Test
{
delegate void Printer();
static void Main()
{
Listprinters = new List ();
for (int i=0; i < 10; i++)
{
printers.Add(delegate { Console.WriteLine(i); });
}
foreach (Printer printer in printers)
{
printer();
}
}
}
Answer: Ah, the joys of captured variables. There's only one i variable here, and its value changes on each iteration of the loop. The anonymous methods capture the variable itself rather than its value at the point of creation - so the result is 10 printed ten times!