Практическое руководство. Управление областью действия переменной (Visual Basic)
Как правило, переменная находится в область или отображается для справки по всему региону, в котором вы объявляете его. В некоторых случаях уровень доступа переменной может повлиять на его область.
Для получения дополнительной информации см. Scope in Visual Basic.
Область на уровне блока или процедуры
Создание переменной, видимой только в блоке
Поместите инструкцию Dim для переменной между операторами, инициирующими и завершающими объявлениями этого блока, например между
For
операторамиFor
цикла.Next
Можно ссылаться на переменную только из блока.
Чтобы сделать переменную видимой только в процедуре
Поместите
Dim
инструкцию для переменной внутри процедуры, но вне любого блока (напримерWith
, блока ...End With
).Переменную можно ссылаться только из процедуры, включая внутри любого блока, содержащегося в процедуре.
Область на уровне модуля или пространства имен
Для удобства уровень единого термина применяется одинаково к модулям, классам и структурам. Уровень доступа переменной уровня модуля определяет его область. Пространство имен, содержащее модуль, класс или структуру, также влияет на область.
Чтобы сделать переменную видимой во всем модуле, классе или структуре
Поместите инструкцию
Dim
переменной внутри модуля, класса или структуры, но за пределами любой процедуры.Вы можете ссылаться на переменную из любого места в модуле, классе или структуре, но не извне.
Создание переменной, видимой во всем пространстве имен
Поместите инструкцию
Dim
переменной внутри модуля, класса или структуры, но за пределами любой процедуры.Включите в инструкцию
Dim
другую или общедоступную ключевое слово.Вы можете ссылаться на переменную из любого места в пространстве имен, содержащей модуль, класс или структуру.
Пример
В следующем примере объявляется переменная на уровне модуля и ограничивается видимостью кода в модуле.
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
Чем меньше область переменной, тем меньше вероятность того, что вредоносный код может неправильно использовать его.