我想在Visual Studio中設置一個全局變量,但是我無法將其設置爲靜態。有沒有辦法讓我將變量設置爲靜態,並通過不同的方法共享它,或者每次改變時都保存變量?聲明全局靜態變量
聲明全局靜態變量
回答
你有兩個選擇:
1 - 創建一個包含共享變量(這是在C#中相同的靜態變量)
Public Class GlobalVariables
Public Shared Bar As String
End Class
然後,您可以使用類名訪問這一類:
GlobalVariables.Bar = "Hello world"
2 - 創建模塊(這是類似於在c#靜態類)
Public Module GlobalVariables
Public Bar As String
End Module
然後,可以在代碼訪問該值是這樣的:
Bar = "Goodbye cruel world"
我所做的就是將Shared變量放在與所用方法相同的類中,並將其稱爲不帶類名的變量名。在classname.variablename中,因爲它在同一個類中。這可能是錯誤嗎?另外,我是否會像找到按鈕點擊功能一樣使用方法? – user3568182
如果使用由@馬特Wilko呈現的數字1選項,則可以通過類的對象實例或者引用共享構件通過引用沒有對象引用的類。兩者都指向並遞增相同的變量,因此引用相同的值。儘管Visual Studio編譯器提供了一個關於引用對象實例的警告,並說它不會被評估,但它仍然會編譯。編譯器的建議是使用類名。
Public Class GlobalVariables
Public Shared Foo As Integer
End Class
將以下到表單,並調用從按鈕單擊事件過程IncrementIntegers(),你會發現,myGlobalVariables.Foo和GlobalVariables.Foo都返回20
Private Sub IncrementIntegers()
Dim myGlobalVariables As New GlobalVariables
myGlobalVariables.Foo = 0
GlobalVariables.Foo = 0
myGlobalVariables.Foo += 10
GlobalVariables.Foo += 10
Dim iLocalInt1 = myGlobalVariables.Foo
MessageBox.Show("myGlobalVariables.Foo = " & iLocalInt1.ToString)
Dim iLocalInt2 = GlobalVariables.Foo
MessageBox.Show("GlobalVariables.Foo = " & iLocalInt2.ToString)
End Sub
注意與選項1,Foo必須使用類名稱或對象名稱進行限定。使用選項2,它是一個模塊而不是一個類,因此無法創建對象引用。公共變量可以被引用而不用模塊名限定它,除非具有相同名稱的變量出現在另一個模塊中,在這種情況下,編譯器會拋出名稱衝突錯誤。例如,
Public Module1
Public Foo As String
End Module
Public Module2
Public Foo As String
End Module
刪除Module2和Foo可以從任何地方調用unqualified。
Foo = "Happy birthday"
隨着單詞數本,富必須與名被定爲都指向不同的可變和代表不同的和獨立的值。
Module1.Foo = "Goodbye cruel world"
Module2.Foo = "Hello new world"
這已經得到解答,謝謝大家。 – user3568182
- 1. 靜態全局變量V靜態全局類變量
- 2. C++ - 好的在.h文件中聲明靜態全局變量?
- 3. 聲明const全局變量時需要靜態嗎?
- 4. 將MainWindow聲明爲全局靜態變量的危險
- 5. 如何在OptaPlanner中聲明非靜態全局變量
- 6. 聲明全局變量
- 7. 全局變量聲明
- 8. RestTemplate應該靜態全局聲明?
- 9. 靜態全局變量和靜態局部變量
- 10. Eclipse:未明確聲明全局變量
- 11. 全局靜態變量vs函數中的靜態變量?
- 12. 在Arduino中聲明全局變量
- 13. 在perl中聲明全局變量
- 14. 在ActionScript中聲明全局變量?
- 15. 在Matlab中聲明全局變量
- 16. 在coffescript中聲明全局變量
- 17. 聲明一個全局的Request.ServerVariable變量
- 18. 在yacc中聲明全局變量
- 19. proc聲明中的Tcl全局變量
- 20. JavaScript;我如何聲明變量全局?
- 21. 全局變量在android中的聲明
- 22. 如何聲明全局變量?
- 23. 聲明和初始化全局變量
- 24. 聲明Button1_Click中的全局變量
- 25. 如何聲明全局變量
- 26. 全局變量多重聲明
- 27. Qt中的全局變量聲明
- 28. 無法用TypeScript聲明全局變量
- 29. 在Java中聲明全局變量
- 30. MSAccess:全局與本地變量聲明
在VB.NET中靜態是'Shared'。以這種方式調用它:'ClassName.SharedVariableName'。它必須是「公開」的,可以從課外訪問。請注意,您不是隻通過方法共享它,而是跨不同線程共享,這可能導致鎖定或不正確的結果(在ASP.NET中爲f.e.)。 –
感謝您保證「共享」是靜態的。看來我在工作中面臨運行時錯誤,或者正在使用「共享」形式的變量。你能給我舉個例子嗎? – user3568182
你能發佈你的代碼嗎 –