为了账号安全,请及时绑定邮箱和手机立即绑定

C#5.0中的捕获的闭包(循环变量)

C#5.0中的捕获的闭包(循环变量)

C#
一只斗牛犬 2019-11-03 12:04:27
这在C#5.0中正常运行(意味着达到预期):var actions = new List<Action>();foreach (var i in Enumerable.Range(0, 10)){    actions.Add(() => Console.WriteLine(i));}foreach (var act in actions) act();打印0到9。但是此显示10表示10次:var actions = new List<Action>();for (var i = 0; i < 10; i++){    actions.Add(() => Console.WriteLine(i));}foreach (var act in actions) act();问题:这是我们在5.0之前的C#版本中遇到的一个问题。因此,我们必须使用局部循环占位符进行关闭,并且现在已在C#5.0中的“ foreach”循环中对其进行了修复。但不要在“ for”循环中!这背后的原因是什么(也无法解决for循环问题)?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信