- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
var actions = new List<Action>();
foreach (var i in Enumerable.Range(1, 3))
{
actions.Add(() => Console.WriteLine(i));
}
foreach (var action in actions)
{
action();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
var actions = new List<Action>();
foreach (var i in Enumerable.Range(1, 3))
{
actions.Add(() => Console.WriteLine(i));
}
foreach (var action in actions)
{
action();
}
Внезапно:
http://ideone.com/RaiHr
http://ideone.com/EMQBA
Блин, вот было понятно, просто так - это значение, * - указатель, & - ссылка. Нет, взяли, упростили... А то указатели, видите ли, это слишком сложно.
http://www.rsdn.ru/article/csharp/Closure_in_Csharp.xml
http://habrahabr.ru/post/141270/
ЗЫ. это типичный пример замыкания\closure