【发布时间】:2010-09-30 10:04:37
【问题描述】:
我在 VB.NET 中使用 LINQ,有时我会遇到类似
的查询For i = 0 To 10
Dim num = (From n In numbers Where n Mod i = 0 Select n).First()
Next
然后出现警告“在 lambda 表达式中使用迭代变量可能会产生意想不到的结果。相反,在循环中创建一个局部变量并为其分配迭代变量的值。”
我知道在 lambda 表达式中使用迭代变量不是一个好习惯,因为 lambda 表达式仅在需要时才计算。 (This question 就是这样)
现在我的问题是,在使用 First()、Single()、ToList() 等结构就地评估表达式的情况下,如何抑制此警告。(这只是一个警告,但我喜欢我的代码很干净。)
(声明一个局部变量并将迭代变量传递给它是一种选择,但我正在寻找一个干净的解决方案。)
【问题讨论】:
-
为什么你在寻找“别的东西”?
-
在一个三行块中(1.For 2.DoSomething(LinqExpression) 3. Next)有第四行
Dim localVar = iterationVar并不好。但似乎,这是最好的选择
标签: vb.net lambda iteration suppress-warnings