如何:控制變數的範圍 (Visual Basic)
一般而言,變數位於範圍中,或是在您宣告變數的整個區域內,其為可見以供參考。 在某些情況下,變數的存取層級可能會影響其範圍。
如需詳細資訊,請參閱 Scope in Visual Basic。
區塊或程序層級的範圍
讓變數只能在區塊內顯示
將變數的 Dim 陳述式放在該區塊的起始和終止宣告陳述式之間,例如
For
迴圈的For
與Next
陳述式之間。您只能從區塊內參考變數。
讓變數只能在程序內顯示
將變數的
Dim
陳述式放在程序內,但位於任何區塊 (例如With
...End With
區塊) 之外。您只能從程序內參考變數,包括在任何包含在程序內的區塊內。
模組或命名空間層級的範圍
為了方便起見,單一詞彙模組層級同樣適用於模組、類別和結構。 模組層級變數的存取層級會決定其範圍。 包含模組、類別或結構的命名空間也會影響範圍。
讓變數在整個模組、類別或結構中可見
將變數的
Dim
陳述式放在模組、類別或結構內,但不屬於任何程序。在
Dim
陳述式中包含 Private 關鍵字。您可以從模組、類別或結構內的任何位置參考變數,但不能從它之外參考。
讓變數在整個命名空間中可見
範例
下列範例會在模組層級宣告變數,並將其可見度限制在模組內的程式碼。
Module demonstrateScope
Private strMsg As String
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
End Module
在上述範例中,模組 demonstrateScope
中定義的所有程序都可以參考 String
變數 strMsg
。 呼叫 usePrivateVariable
程序時,它會在對話方塊中顯示字串變數 strMsg
的內容。
在對上述範例進行下列變更之下,可以在其宣告命名空間中的任何位置透過程式碼參考字串變數 strMsg
。
Public strMsg As String
穩固程式設計
變數的範圍越窄,您不小心參考另一個具有相同名稱變數的機率就越低。 也可以將參考比對的問題降到最低。
.NET Framework 安全性
變數的範圍越窄,惡意程式碼可以不當使用它的機會越小。