gpt4 book ai didi

vb.net - VB.NET 编译器警告 BC42324 是否已在 VS2013 中删除?

转载 作者:行者123 更新时间:2023-12-01 12:36:14 25 4
gpt4 key购买 nike

我最近安装了 VS2013(连同以前的 VS2010 安装)并注意到在编译相同的 VB.NET 代码时我不再收到编译器警告“BC42324”(下面的文本)(我在 VS2010 中重新编译以确认警告仍然显示) :

Using the iteration variable in a query expression may have unexpected results. Instead, create a local variable within the loop and assign it the value of the iteration variable.

有关 MSDN 的文档似乎暗示警告仍然包含在内。我看到/没有看到带有以下代码的警告:

Dim Numbers = {0, 1}
For Each index In Numbers
Dim SumPlusIndex = Aggregate x In Numbers Select x + index Into Sum()
Next

这个警告真的被删除了吗?那是怎么来的?如果不是,我的 VS2010 和 VS2013 安装之间是否存在其他可能导致差异的环境差异?

最佳答案

是的,这就是臭名昭著的 capture the for loop variable漏洞。它伤害了许多 程序员,因此 Microsoft 决定对此采取一些措施。他们解决了 For Each 循环,但不是 For 循环。您仍然可以像这样触发警告:

Sub Main()
For ix As Integer = 1 To 10
Dim dlg = Sub()
Console.WriteLine(ix) '' Eek!
End Sub
'' etc...
Next
End Sub

关于vb.net - VB.NET 编译器警告 BC42324 是否已在 VS2013 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29545342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com