在VB.Net中,您可以在本地(在方法中)声明变量并让它们具有全局范围吗?
我是VB.Net的新手,我正试图弄清楚语言的一些工作方式。在之前使用C ++编写的项目中,我能够在一个方法内部将变量声明为全局变量,节省内存空间,直到第一次调用该方法并实例化该变量。
只是好奇这是否可以通过VB.Net实现。
答案 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
语句,但由于我似乎找不到更好的方法来解决这个问题,这就是我现在要做的事情。