循环中的局部字符串变量初始化
Local String-variable initialization in Loop
我遇到了 vb.net(框架 4.8,VS2019,Option Explicit
和 Strict
On
)和 [=15 中的字符串变量的奇怪行为=]循环。
为什么 tmpVal
变量没有在每个循环中重新初始化,或者我可能遗漏了什么?
这是我的代码:
Sub Main()
Dim Props() As String = {"one", "two", "three"}
For Each cProp As String In Props
Dim tmpVal As String
If cProp = "two" Then
If String.IsNullOrEmpty(tmpVal) Then
tmpVal = cProp
Else
tmpVal = "Nope"
End If
End If
Console.WriteLine("cProp " & cProp & " : " & tmpVal)
Next
Console.ReadKey()
End Sub
我得到的输出:
cProp one :
cProp two : two
cProp three : two
我原以为第三行是“空的”
谢谢
在循环内声明一个变量并不意味着它会在每次迭代时被初始化。
它只是将范围限制在循环中。
意味着它将在您的示例中初始化一次为 Nothing
。
您可以按如下方式更改初始化以获得预期结果:
Dim tmpVal As String = ""
我遇到了 vb.net(框架 4.8,VS2019,Option Explicit
和 Strict
On
)和 [=15 中的字符串变量的奇怪行为=]循环。
为什么 tmpVal
变量没有在每个循环中重新初始化,或者我可能遗漏了什么?
这是我的代码:
Sub Main()
Dim Props() As String = {"one", "two", "three"}
For Each cProp As String In Props
Dim tmpVal As String
If cProp = "two" Then
If String.IsNullOrEmpty(tmpVal) Then
tmpVal = cProp
Else
tmpVal = "Nope"
End If
End If
Console.WriteLine("cProp " & cProp & " : " & tmpVal)
Next
Console.ReadKey()
End Sub
我得到的输出:
cProp one :
cProp two : two
cProp three : two
我原以为第三行是“空的”
谢谢
在循环内声明一个变量并不意味着它会在每次迭代时被初始化。
它只是将范围限制在循环中。
意味着它将在您的示例中初始化一次为 Nothing
。
您可以按如下方式更改初始化以获得预期结果:
Dim tmpVal As String = ""