![]() |
1
64
当开发人员期望lambda表达式或匿名委托捕获变量的值时,实际捕获变量本身时,就会出现“外部变量陷阱”。 例子:
可能输出#2:
修正:
有关详细信息,请参见 Eric Lippert's blog |
![]() |
2
5
像这样的
|
![]() |
3
2
值得注意的是,这个陷阱的存在
印刷品
然而
|
![]() |
4
1
这将打印: i: 1 match: Bill i: 5 match: Bob i: 9 match: David ReSharper 将警告“访问修改的闭包”,在这种情况下可以安全地忽略它。 |
![]() |
5
0
http://en.wikipedia.org/wiki/Closure_(computer_science) 此外,本文还提供了一个更为具体的C#实现: http://blogs.msdn.com/b/abhinaba/archive/2005/08/08/448939.aspx 总之,tl;lr是变量作用域在匿名委托或lambda表达式中与在代码中的其他任何地方一样重要——行为只是没有那么明显。 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Pavel Foltyn · 如何在C中生成逆字典# 7 月前 |
![]() |
ewok · 基于种子和上一个值创建值列表 12 月前 |
|
Vasu V · 将foreach转换为select语句 1 年前 |
![]() |
Modest · 使用命名空间和文本值序列化xElement 1 年前 |