在本地制作全局变量

时间:2018-05-23 19:45:07

标签: vb.net scope

在VB.Net中,您可以在本地(在方法中)声明变量并让它们具有全局范围吗?

我是VB.Net的新手,我正试图弄清楚语言的一些工作方式。在之前使用C ++编写的项目中,我能够在一个方法内部将变量声明为全局变量,节省内存空间,直到第一次调用该方法并实例化该变量。

只是好奇这是否可以通过VB.Net实现。

2 个答案:

答案 0 :(得分:1)

.NET中的封装可能使您难以以您想到的方式实现全局变量。最接近的解决方案可能是在模块中声明一个公共变量,但它不能立即在另一个模块中使用。

我通常按照你想要的方式创建一个单例类"全局"包含代表我想要移动的全局变量的成员字段,然后我只传递我的"全局变量"实例作为参数。

Public Dim myGlobals as GlobalClass
myGlobals.someVariable = "preserve me"

然后通过方法访问它们:someMethod(myGlobals)默认情况下将通过引用传递它们。

答案 1 :(得分:0)

所以雅各布对我的问题发表了一个很好的答案。经过一番研究后,我认为最好的办法是做类似以下的事情:

Class ScopeTest

    Private randVar As Object = Nothing

    Sub Initialize()
        randVar = New Label()
    End Sub
End Class

基本上,在我需要的最高级别范围内创建变量,并将其设置为Nothing,以便不会为其分配任何数据(但应该),但变量名称具有适当的范围。然后我只是在第一次调用它时实例化变量,然后它将在整个代码中实现。

显然,这个设置的最大缺陷是,如果我在等于Nothing时调用该对象。这将要求我在代码中添加一些If Not IsNothing语句,但由于我似乎找不到更好的方法来解决这个问题,这就是我现在要做的事情。