5up*_*dan 7 .net vb.net for-loop
如果这是一个错误或功能,我无法解决
For i = 0 To 4
Dim strTest As String
If i = 0 Then
strTest = "test value"
End If
Console.WriteLine(strTest)
Next
Run Code Online (Sandbox Code Playgroud)
我认为通过在循环中声明字符串,它不会保持其值,但在运行此代码后,控制台有5行"测试值".如果相反我声明strTest像:
Dim strTest As String= ""
Run Code Online (Sandbox Code Playgroud)
然后字符串不保持其值 - 这就是我期望函数首先运行的方式.
这是编译器的故意行为吗?
"按设计破碎"
http://msdn.microsoft.com/en-us/library/1t0wsc67.aspx
注意即使变量的范围仅限于块,其生命周期仍然是整个过程的生命周期.如果在过程中多次输入块,则每个块变量将保留其先前的值.为避免在这种情况下出现意外结果,最好在块的开头初始化块变量.
这里的"块"是FOR循环的主体,并且你输入一个pr.循环的迭代.因此strTest将保留第一次迭代中设置的值("测试值")以用于下一次迭代(1,2,3,4).