Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При передаче одного или нескольких аргументов в процедуру каждый аргумент соответствует базовому элементу программирования в вызывающем коде. Можно передать значение этого базового элемента или ссылку на него. Это называется механизмом передачи.
Передача по значению
Передайте аргумент по значению , указав ключевое слово ByVal для соответствующего параметра в определении процедуры. При использовании этого механизма передачи Visual Basic копирует значение базового элемента программирования в локальную переменную в процедуре. Код процедуры не имеет доступа к базовому элементу в вызывающем коде.
Передача по ссылке
Вы передаете аргумент по ссылке указав ключевое слово ByRef для соответствующего параметра в определении процедуры. При использовании этого механизма передачи Visual Basic предоставляет процедуре прямую ссылку на базовый элемент программирования в вызывающем коде.
Механизм передачи и тип элемента
Выбор механизма передачи не совпадает с классификацией базового типа элемента. Передача по значению или по ссылке означает то, что Visual Basic предоставляет процедурному коду. Тип значения или ссылочный тип ссылается на то, как элемент программирования хранится в памяти.
Однако механизм передачи и тип элемента связаны друг с другом. Значение ссылочного типа — это указатель на данные в другом месте в памяти. Это означает, что при передаче ссылочного типа по значению в коде процедуры есть указатель на данные базового элемента, даже если сам код не имеет доступа к самому базовому элементу. Например, если элемент является переменной массива, код процедуры не имеет доступа к самой переменной, но он может получить доступ к элементам массива.
Возможность изменять
При передаче немодифицируемого элемента в качестве аргумента процедура никогда не может изменять его в вызывающем коде, будь то ByVal
или ByRef
.
Для изменяемого элемента в следующей таблице приводится сводка взаимодействия между типом элемента и механизмом передачи.
Тип элемента | Пройдено ByVal |
Пройдено ByRef |
---|---|---|
Тип значения (содержит только значение) | Процедура не может изменить переменную или любой из его членов. | Процедура может изменить переменную и ее члены. |
Ссылочный тип (содержит указатель на экземпляр класса или структуры) | Процедура не может изменить переменную, но может изменить члены экземпляра, на который он указывает. | Процедура может изменить переменную и члены экземпляра, на который она указывает. |
См. также
- процедуры
- Параметры процедуры и аргументы
- Как передавать аргументы в процедуру
- Передача аргументов по значению и по ссылке
- Различия между модификируемыми и неизменяемыми аргументами
- Практическое руководство. Изменение значения аргумента процедуры
- Практическое руководство. Защита аргумента процедуры от изменений значений
- Как принудительно передать аргумент по значению
- Передача аргументов по позиции и по имени
- Типы значений и ссылочные типы