![]() |
1
6
当你修改
对于不完全理解闭包的程序员来说,这常常是一个意外的惊喜,因此Resharper对此有一个警告。
通过使
在代码中,依赖于闭包获取对原始变量的更改,以便它知道何时停止。 顺便说一下,不使用LINQ编写函数的最简单方法如下:
使用LINQ,您可以简单地调用
|
![]() |
2
8
在该特定代码中,没有任何内容,请以以下内容为例:
结果似乎会返回值所在的所有记录
在您的示例中,该值没有被修改,但resharper警告您该值可能被修改,并且延迟执行可能会导致您出现问题。 |
![]() |
3
3
见 http://ericlippert.com/2009/11/12/closing-over-the-loop-variable-considered-harmful-part-one/ 对于这个问题的广泛讨论,以及我们在假设的未来版本的C中可以做什么来减轻它。 |
![]() |
4
2
我不确定Resharper是否会对此给出完全相同的警告,但下面说明了类似的情况。循环的迭代器在LINQ子句中使用,但直到循环完成后才实际计算该子句,此时迭代器变量已更改。下面是一个人为设计的示例,它看起来应该打印1到100之间的所有奇数,但实际上打印1到99之间的所有数字。
这可能是一个很容易犯的错误。我听过有人说,如果您真正理解闭包/函数式编程等,就不应该犯这种错误。我也见过专业的开发人员,他们确实很好地掌握了这些概念,犯了这个错误。 |
![]() |
5
0
好吧,警告是因为
|
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 3 年前 |
|
Dansih · .Net核心自定义身份验证方案 3 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 3 年前 |