好的,所以我开始学习vb并做了一些实验,直到我遇到了这个我无法理解的事情
所以我有一个带有两个模块的控制台应用程序
Module1.vb (程序从此开始)
Module Module1
Sub Main()
add.addone()
add.addone()
add.addone()
Console.Read()
End Sub
End Module
add.vb
Public Module add
Private counter As Integer
Public Sub addone()
counter += 1
Console.Write(counter)
End Sub
End Module
我希望它能在控制台上打印出一种模式:
1 1 1
为什么要打印
1 2 3
我问这个是因为,我理解的是,在调用add.addone()之后。变量(计数器)不应该存在!所以当为第二次时间调用add.addone()时,它应该是空白的,因此再次打印出来。
我希望你能帮助我。我做错了什么,为什么会这样?
感谢, Vidhu
答案 0 :(得分:1)
调用add.addone()之后。变量(计数器)应该不再存在!
为什么会这样? counter
在addone
的{{1}}外部声明为,位于周围的模块add
中。所以当然即使在方法退出后它仍然存在。
(顺便提一下,您应该遵循模块和方法的.NET PascalCase命名约定......)
答案 1 :(得分:1)
这是因为变量计数器在一个不在Class内的Module中声明 当程序更改模块中的公共变量时,程序的任何其他部分都会获得相同的值。您不能像使用Class那样创建模块的实例,其中每个实例都有自己的内部变量副本。