Практическое руководство. Управление доступностью переменной
Обновлен: Ноябрь 2007
Управлять доступом к переменной можно, указывая уровень доступа к ней. Уровень доступа определяет, какой код имеет разрешение на чтение или запись в переменную.
Переменные-члены (определяются на уровне модуля и вне любых процедур) по умолчанию имеют общий уровень доступа, в результате чего любой код, в котором они видны, может к ним обращаться. Это положение можно изменить, указав модификатор доступа.
Локальные переменные (определяются внутри процедуры) обычно общедоступны, хотя доступ к ним имеет только код внутри процедуры. Нельзя изменить уровень доступа локальной переменной, но можно изменить уровень доступа содержащей ее процедуры.
Дополнительные сведения см. в разделе Уровни доступа в Visual Basic.
Доступ с модификаторами Private и Public
Чтобы сделать переменную доступной только из модуля, класса или структуры, выполните следующие действия:
Поместите оператор Оператор Dim (Visual Basic) для переменной внутри модуля, класса или структуры, но вне любой процедуры.
Включите в оператор Dim ключевое слово Private (Visual Basic).
Теперь можно считать или записывать значение переменной из любого места внутри модуля, класса или структуры, но не из-за их пределов.
Чтобы сделать переменную доступной из любого кода, в котором она видна, выполните следующие действия:
В случае переменной-члена поместите инструкцию Dim для переменной внутрь модуля, класса или структуры, но вне любой процедуры.
Включите в оператор Dim ключевое слово Public (Visual Basic).
Теперь можно считывать и записывать значение переменной из любого кода, взаимодействующего со сборкой.
–либо–
В случае локальной переменной поместите инструкцию Dim для переменной внутрь процедуры.
Не включайте зарезервированное слово Public в инструкцию Dim.
Теперь можно считать или записывать значение переменной из любого места внутри процедуры, но не из-за ее пределов.
Доступ с модификаторами Protected и Friend
Можно ограничить уровень доступа переменной ее классом и его наследниками или сборкой. Можно также использовать объединение этих ограничений, которое позволит обращаться к переменной из кода любого производного класса или любого другого места в этой же сборке. Создать это объединение можно с помощью комбинации ключевых слов Protected и Friend в одном и том же объявлении.
Чтобы сделать переменную доступной только из своего класса и его наследников, выполните следующие действия:
Поместите инструкцию Dim для переменной внутрь класса, но вне любой процедуры.
Включите в оператор Dim ключевое слово Protected (Visual Basic).
Теперь можно считать или записывать значение переменной из любого места внутри класса, а также внутри любого его наследника, но не из классов, находящихся вне иерархии наследования.
Чтобы сделать переменную доступной только из ее сборки, выполните следующие действия:
Поместите инструкцию Dim для переменной внутрь модуля, класса или структуры, но вне любой процедуры.
Включите в оператор Dim ключевое слово Friend (Visual Basic).
Теперь можно считать или записывать значение переменной из любого места внутри модуля, класса или структуры, а также внутри любого кода в той же сборке, но не извне сборки.
Пример
В следующем примере показано объявление переменных с уровнями доступа Public, Protected, Friend, Protected Friend и Private. Обратите внимание — когда в инструкции Dim задается уровень доступа, использовать ключевое слово Dim необязательно.
Public Class classForEverybody
Protected Class classForMyHeirs
Friend stringForThisProject As String
Protected Friend stringForProjectAndHeirs As String
Private numberForMeOnly As Integer
Безопасность
Чем строже уровень доступа к переменным, тем меньше вероятность того, что вредоносный код может использовать их не по назначению.