【发布时间】:2010-11-15 12:54:48
【问题描述】:
今天我发现我多年来对 VB.NET 的假设并不正确(令人担忧!)。我假设在循环中声明的变量具有声明它的迭代的生命周期,但实际上它似乎具有整个过程的生命周期。
例如:
For i As Integer = 0 To 1
Dim var1 As Boolean
Console.WriteLine(var1.ToString())
var1 = True
Console.WriteLine(var1.ToString())
Next
Console.ReadKey()
我假设输出为 False、True、False、True,但实际上它是 False、True、True、True。
在 C# 中,等效代码无法编译,因为您会收到错误“使用未分配的局部变量 'var1'”的编译时错误。
我意识到有很多方法可以解决这个问题,最佳做法是在循环之外声明变量并在每次循环开始时重置它。
我发现这种行为对我来说是如此违反直觉,以至于我希望在/如果我这样做时至少在 VB.NET 中发出编译时警告。 (我也可以在我已经拥有的任何项目上设置它,并收到警告,让我检查我的假设没有导致错误)。
有谁知道如何/如果我可以在 VB.NET 中生成编译时警告?我是唯一一个发现这种反直觉的人吗?
【问题讨论】:
标签: vb.net