【问题标题】:Has the VB.NET compiler warning BC42324 been removed in VS2013?VB.NET 编译器警告 BC42324 是否已在 VS2013 中删除?
【发布时间】:2015-04-09 17:40:07
【问题描述】:

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

在查询表达式中使用迭代变量可能有 意想不到的结果。相反,在循环中创建一个局部变量 并将迭代变量的值赋值给它。

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

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

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

【问题讨论】:

    标签: vb.net visual-studio-2010 visual-studio-2013 compiler-warnings


    【解决方案1】:

    是的,这就是臭名昭著的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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2011-05-09
      相关资源
      最近更新 更多