块级范围如何与VB.net中的Dim As New一起使用?

时间:2010-01-21 16:43:41

标签: vb.net

我试图在网上找到这个,但我的GoogleFu让我失望了......

While DataReader.Read
    Dim Foo as New FooBar
    Foo.Property = "Test"
Loop

在VB.net中,这会为每个循环创建一个新的Foo实例吗?或者只是一个具有块级范围的Foo实例?在这方面,所有块(If..EndIf,For..Next)的工作方式是否相同?我知道Foo不能在块之外访问,只是不确定它是否会创建多个Foo实例。

3 个答案:

答案 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