Поделиться через


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

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

Для получения более подробной информации см. раздел "Область видимости" в Visual Basic.

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

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

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

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

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

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

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

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

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

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

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

  2. Включите ключевое слово Private в инструкцию 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

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

См. также