【发布时间】:2015-03-10 22:12:33
【问题描述】:
我刚刚偶然发现模块中的公共变量可以被我的主窗体访问(如果不能被其他类/模块访问??)。
我刚刚创建了一个模块来存储我所有的全局变量以供组织使用,并计划在变量名出现在其他地方的地方完全限定它们。
然后,当我从主窗体复制变量、将它们注释掉并将它们粘贴到我的变量模块中时,没有发生错误。我为哈哈运行了我的程序,它运行得很好。我不必使用 [ModuleName].[VariableName]。
为什么从我的表单到模块,但如果我试图从模块访问表单中的变量却不行?
即使它确实有效,我是否仍应使用全名来访问变量(最佳实践)?
【问题讨论】:
-
在模块中创建的东西与类中的静态变量基本相同。如果您使用一个类
Variables并在其中声明一个变量Public Static AwesomeVariable As Integer,它的工作方式相同。例如,模块是 C# 中的Public Static class。 -
一般来说,那些 Globals 代表了一些东西或与应用程序中的某个 Actor 相关。最佳实践是将它们放在与该 Actor 相关的类中(例如
UserOptions)。 -
关于我的评论:在 VB 中,它将被称为
Shared变量而不是静态变量。对不起,我总是把这两个词弄混了。 -
模块中的变量不能声明为共享。这就是来自 Visual Studio 的智能感知错误。我想我知道你的意思。 VB 中也有静态和常量。不知道其他 .Net 语言。
-
我从来没有说过它们可以 ;-) 但是模块中的所有变量都被视为类中的共享变量(它们在幕后)。