我试图在网上找到这个,但我的GoogleFu让我失望了......
While DataReader.Read
Dim Foo as New FooBar
Foo.Property = "Test"
Loop
在VB.net中,这会为每个循环创建一个新的Foo实例吗?或者只是一个具有块级范围的Foo实例?在这方面,所有块(If..EndIf,For..Next)的工作方式是否相同?我知道Foo不能在块之外访问,只是不确定它是否会创建多个Foo实例。
答案 0 :(得分:3)
由于您处于循环中,因此您将获得多个Foo实例。在块内创建的任何foo都不能在该块之外访问。
答案 1 :(得分:2)
为每次迭代创建一个新的FooBar
。 几乎与此相同:
Dim Foo as FooBar
While DataReader.Read
Foo = New FooBar
Foo.Property = "Test"
Loop
...不同之处在于,在上一次迭代中创建的FooBar
可用于While循环下的代码(在同一个块内,即)。
答案 2 :(得分:1)
这将为循环的每次迭代创建一个新的Foo。
这句话并非100%正确。在VB.Net中,实际上可以通过一些tricker来查看变量的先前值。例如
Dim i = 0
While i < 3
Dim Foo As FooBar
if Foo IsNot Nothing
Console.WriteLine(Foo.Property)
End If
Foo = New FooBar()
Foo.Property = "Test" + i
i = i + 1
End While