我一直在学习C#,我正在努力理解lambdas。在下面的示例中,它打印出10次。
class Program
{
delegate void Action();
static void Main(string[] args)
{
List<Action> actions = new List<Action>();
for (int i = 0; i < 10; ++i )
actions.Add(()=>Console.WriteLine(i));
foreach (Action a in actions)
a();
}
}
显然,lambda后面生成的类正在存储一个引用int i变量的引用或指针,并且每次循环迭代时都会为同一个引用分配一个新值。有没有办法强制lamda获取副本,如C ++ 0x语法
[&](){ ... } // Capture by reference
与
[=](){ ... } // Capture copies
幕布斯7119047
呼如林
相关分类