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