Практическое руководство. Управление областью действия переменной (Visual Basic)

Как правило, переменная находится в область или отображается для справки по всему региону, в котором вы объявляете его. В некоторых случаях уровень доступа переменной может повлиять на его область.

Для получения дополнительной информации см. Scope in Visual Basic.

Область на уровне блока или процедуры

Создание переменной, видимой только в блоке

  • Поместите инструкцию Dim для переменной между операторами, инициирующими и завершающими объявлениями этого блока, например между For операторами For цикла.Next

    Можно ссылаться на переменную только из блока.

Чтобы сделать переменную видимой только в процедуре

  • Поместите Dim инструкцию для переменной внутри процедуры, но вне любого блока (например With, блока ...End With ).

    Переменную можно ссылаться только из процедуры, включая внутри любого блока, содержащегося в процедуре.

Область на уровне модуля или пространства имен

Для удобства уровень единого термина применяется одинаково к модулям, классам и структурам. Уровень доступа переменной уровня модуля определяет его область. Пространство имен, содержащее модуль, класс или структуру, также влияет на область.

Чтобы сделать переменную видимой во всем модуле, классе или структуре

  1. Поместите инструкцию Dim переменной внутри модуля, класса или структуры, но за пределами любой процедуры.

  2. Включите частный ключевое слово в инструкциюDim.

  3. Вы можете ссылаться на переменную из любого места в модуле, классе или структуре, но не извне.

Создание переменной, видимой во всем пространстве имен

  1. Поместите инструкцию Dim переменной внутри модуля, класса или структуры, но за пределами любой процедуры.

  2. Включите в инструкцию Dim другую или общедоступную ключевое слово.

  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

Чем меньше область переменной, тем меньше вероятность того, что вредоносный код может неправильно использовать его.

См. также