- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+140
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