如何:控制變數的範圍 (Visual Basic)

一般而言,變數位於範圍中,或是在您宣告變數的整個區域內,其為可見以供參考。 在某些情況下,變數的存取層級可能會影響其範圍。

如需詳細資訊,請參閱 Scope in Visual Basic

區塊或程序層級的範圍

讓變數只能在區塊內顯示

  • 將變數的 Dim 陳述式放在該區塊的起始和終止宣告陳述式之間,例如 For 迴圈的 ForNext 陳述式之間。

    您只能從區塊內參考變數。

讓變數只能在程序內顯示

  • 將變數的 Dim 陳述式放在程序內,但位於任何區塊 (例如 With...End With 區塊) 之外。

    您只能從程序內參考變數,包括在任何包含在程序內的區塊內。

模組或命名空間層級的範圍

為了方便起見,單一詞彙模組層級同樣適用於模組、類別和結構。 模組層級變數的存取層級會決定其範圍。 包含模組、類別或結構的命名空間也會影響範圍。

讓變數在整個模組、類別或結構中可見

  1. 將變數的 Dim 陳述式放在模組、類別或結構內,但不屬於任何程序。

  2. Dim 陳述式中包含 Private 關鍵字。

  3. 您可以從模組、類別或結構內的任何位置參考變數,但不能從它之外參考。

讓變數在整個命名空間中可見

  1. 將變數的 Dim 陳述式放在模組、類別或結構內,但不屬於任何程序。

  2. Dim 陳述式中包含 FriendPublic 關鍵字。

  3. 在包含模組、類別或結構的命名空間內,您可以在任何位置參考變數。

範例

下列範例會在模組層級宣告變數,並將其可見度限制在模組內的程式碼。

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 安全性

變數的範圍越窄,惡意程式碼可以不當使用它的機會越小。

另請參閱