Compartilhar via


Diferenças entre passar um argumento pelo valor e por referência (Visual Basic)

Quando você passa um ou mais argumentos para um procedimento, cada argumento corresponde a um elemento de programação oculto no código de chamada.Você passar tanto o valor desse elemento como uma referência a ele.Isso é conhecido como Mecanismo de passagem.

Passagem por valor

Você passa um argumento por favor especificando a palavra-chave ByVal (Visual Basic) para o parâmetro correspondente na definição do procedimento.Quando você usa este mecanismo de passagem, o Visual Basic copia o valor do elemento de programação oculto numa variável local do procedimento.O çodigo do procedimento não tem nenhum acesso ao elemento no código de chamada.

Passagem por referência

Você passa um argumento por referência especificando a palavra-chave ByRef (Visual Basic) para o parâmetro correspondente na definição do procedimento.Quando você usa esse mecanismo de passagem, o Visual Basic dá ao procedimento uma referência direta ao elemento oculto no código de chamada.

Mecanismo de passagem e Tipo do Elemento

A escolha do mecanismo de passagem não é a mesma dependendo do tipo do elemento.Passagem por valor ou referência se refere ao que o Visual Basic fornece ao código do procedimento.Um tipo de valor ou tipo de referência se refere a como o elemento de programação é armazenado na memória.

Entretanto, o mecanismo de passagem e tipo de elemento se relacionam.O valor de um tipo de referência é um ponteiro para os dados em algum lugar da memória.Isso significa que quando você passa um tipo de referência por valor, o código do procedimento tem um ponteiro para os dados do elemento, mesmo que ele não possa acessar o elemento em si.Por exemplo, se o elemento é uma variável array, o código do procedimento não tem acesso à variável em si, mas ele pode acessar os membros do array.

Capacidade de Modificar

Quando você passa um elemento não-modificável como argumento, o procedimento nunca pode modificá-lo no código de chamada, se é passado ByVal ou ByRef.

Para um elemento modificável, a seguinte tabela resume a interação entre o tipo de elemento e o mecanismo de passagem.

Tipo de elemento

Passado ByVal

Passado ByRef

Tipo de valor (contém apenas um valor)

O procedimento não pode mudar a variável ou qualquer um dos seus membros.

O procedimento pode mudar a variável e seus membros.

Tipo de referência (contém um ponteiro para a instância de classe ou estrutura).

O procedimento não pode mudar a variável mas pode mudar membros da instância para qual ele aponta.

O procedimento pode mudar a variável e mudar membros da instância para qual ele aponta.

Consulte também

Tarefas

Como: passar argumentos para um procedimento (Visual Basic)

Como: alterar o valor de um argumento de procedimento (Visual Basic)

Como: proteger contra alterações de valor (Visual Basic), um argumento de procedimento

Como: forçar um argumento para ser passados por valor (Visual Basic)

Conceitos

Procedimentos no Visual Basic

Parâmetros de procedimentos e argumentos (Visual Basic)

Passando argumentos por valor e por referência (Visual Basic)

Diferenças entre os argumentos podem ser modificadas e Nonmodifiable (Visual Basic)

Passando argumentos por posição e por nome (Visual Basic)

Tipos de valor e referência