![]() |
1
17
这是一个修改过的闭包 要解决此问题,必须将变量的副本存储在for循环的范围内:
|
![]() |
2
14
接近。lambda函数捕获 本身。不需要存储 参考 整变量 价值 记住,变量是一个存储位置。名字“i”是指一个特定的存储位置,在你的例子中,它 总是 指的是 存放地点。
对。每次通过循环创建一个新变量。然后闭包每次都捕获一个不同的变量。 这是C#最常报告的问题之一。我们正在考虑更改循环变量声明的语义,以便每次通过循环时都创建一个新变量。 有关此问题的详细信息,请参阅我关于此主题的文章: http://ericlippert.com/2009/11/12/closing-over-the-loop-variable-considered-harmful-part-one/ |
![]() |
3
5
是的 确切地 变量 价值 变量的。通常可以通过引入一个临时变量并绑定到该变量来解决此问题:
尤其地
在里面
|
![]() |
4
2
一个非常简单的解决方法是:
在foreach循环的每次迭代中
|
![]() |
5
1
我也被这个抓到了,正如卡尔加里编码所说,这是一个修改后的结束。我真的很难找到他们,直到我得到了雷沙普。因为这是resharper关注的警告之一,所以我更擅长将它们识别为我的代码。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |