Прочитать на английском

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


Различия между передачей аргумента по значению и по ссылке (Visual Basic)

При передаче одного или нескольких аргументов в процедуру каждый аргумент соответствует базовому элементу программирования в вызывающем коде. Можно передать значение этого базового элемента или ссылку на него. Это называется механизмом передачи.

Передача по значению

Передайте аргумент по значению , указав ключевое слово ByVal для соответствующего параметра в определении процедуры. При использовании этого механизма передачи Visual Basic копирует значение базового элемента программирования в локальную переменную в процедуре. Код процедуры не имеет доступа к базовому элементу в вызывающем коде.

Передача по ссылке

Вы передаете аргумент по ссылке указав ключевое слово ByRef для соответствующего параметра в определении процедуры. При использовании этого механизма передачи Visual Basic предоставляет процедуре прямую ссылку на базовый элемент программирования в вызывающем коде.

Механизм передачи и тип элемента

Выбор механизма передачи не совпадает с классификацией базового типа элемента. Передача по значению или по ссылке означает то, что Visual Basic предоставляет процедурному коду. Тип значения или ссылочный тип ссылается на то, как элемент программирования хранится в памяти.

Однако механизм передачи и тип элемента связаны друг с другом. Значение ссылочного типа — это указатель на данные в другом месте в памяти. Это означает, что при передаче ссылочного типа по значению в коде процедуры есть указатель на данные базового элемента, даже если сам код не имеет доступа к самому базовому элементу. Например, если элемент является переменной массива, код процедуры не имеет доступа к самой переменной, но он может получить доступ к элементам массива.

Возможность изменять

При передаче немодифицируемого элемента в качестве аргумента процедура никогда не может изменять его в вызывающем коде, будь то ByVal или ByRef.

Для изменяемого элемента в следующей таблице приводится сводка взаимодействия между типом элемента и механизмом передачи.

Тип элемента Пройдено ByVal Пройдено ByRef
Тип значения (содержит только значение) Процедура не может изменить переменную или любой из его членов. Процедура может изменить переменную и ее члены.
Ссылочный тип (содержит указатель на экземпляр класса или структуры) Процедура не может изменить переменную, но может изменить члены экземпляра, на который он указывает. Процедура может изменить переменную и члены экземпляра, на который она указывает.

См. также


Дополнительные ресурсы

Обучение

Модуль

Создание методов C# с параметрами - Training

В этом модуле рассматриваются параметры метода, включая типы параметров сквозного и сквозного значения. Этот модуль также охватывает необязательные и именованные аргументы.

События

MCP DevDays

30 июл., 07 - 30 июл., 07

Ускорение производительности, создание будущего

Register Today