0

好的,所以我刚开始学习 vb 并做了一些实验,直到我遇到了这个我无法理解的东西

所以我有一个带有两个模块的控制台应用程序

Module1.vb(程序从这里开始)

Module Module1

    Sub Main()
        add.addone()
        add.addone()
        add.addone()
        Console.Read()
    End Sub

End Module

添加.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()时,它应该是空白的,因此再次打印出 1。

我希望你能帮助我。我做错了什么,为什么会这样?

谢谢, 维杜

4

2 回答 2

1

在调用 add.addone() 之后。变量(计数器)应该不再存在!

为什么会这样?周围的模块中counter声明。因此,即使在方法退出后,它当然仍然存在。addoneadd

(顺便说一下,您应该遵循模块和方法的 .NET PascalCase 命名约定……)

于 2012-10-06T23:06:15.893 回答
1

发生这种情况是因为变量 counter 是在模块内而不是在类内声明的。
当程序更改模块中的公共变量时,程序的任何其他部分都会获得相同的值。您不能像使用 Class 一样创建 Module 的实例,其中每个实例都有自己的内部变量副本。

请参阅模块与类

于 2012-10-06T23:09:15.073 回答