Что выведет каждая из следующих программ на C#?
///////////////////////////////////
// Вариант 1.
///////////////////////////////////
using System;
using System.Collections.Generic;
delegate int F();
class Program
{
static void Main()
{
List<F> fs = new List<F>();
int[] xs = {1, 2, 3};
foreach (int x in xs)
{
fs.Add(delegate { return x; });
}
foreach (F f in fs)
{
Console.WriteLine(f());
}
}
}
///////////////////////////////////
// Вариант 2.
///////////////////////////////////
using System;
using System.Collections.Generic;
delegate int F();
class Program
{
static void Main()
{
List<F> fs = new List<F>();
int[] xs = {1, 2, 3};
foreach (int x in xs)
{
int y = x;
fs.Add(delegate { return y; });
}
foreach (F f in fs)
{
Console.WriteLine(f());
}
}
}
///////////////////////////////////
// Вариант 3.
///////////////////////////////////
using System;
using System.Collections.Generic;
delegate int F();
class Program
{
static void Main()
{
List<F> fs = new List<F>();
int[] xs = {1, 2, 3};
foreach (int x in xs)
{
fs.Add(delegate
{
int y = x;
return y;
});
}
foreach (F f in fs)
{
Console.WriteLine(f());
}
}
}
///////////////////////////////////
// Вариант 4.
///////////////////////////////////
using System;
using System.Collections.Generic;
delegate int F();
class Program
{
static void Main()
{
List<F> fs = new List<F>();
int[] xs = {1, 2, 3};
for (int i = 0; i < 3; i++) // Превед, Numnul ;-)
{
fs.Add(delegate { return xs[i]; });
}
foreach (F f in fs)
{
Console.WriteLine(f());
}
}
}
Проверить свой ответ можно, скомпилировав и запустив их.