Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando você passa um ou mais argumentos para um procedimento, cada argumento corresponde a um elemento de programação subjacente no código de chamada. Você pode passar o valor desse elemento subjacente ou uma referência a ele. Isso é conhecido como o mecanismo de passagem.
passagem por valor
Você passa um argumento por valor especificando a palavra-chave ByVal para o parâmetro correspondente na definição do procedimento. Quando você usa esse mecanismo de passagem, o Visual Basic copia o valor do elemento de programação subjacente em uma variável local no procedimento. O código de procedimento não tem acesso ao elemento subjacente no código de chamada.
Passagem por referência
Você passa um argumento por referência especificando a palavra-chave ByRef para o parâmetro correspondente na definição do procedimento. Quando você usa esse mecanismo de passagem, o Visual Basic fornece ao procedimento uma referência direta ao elemento de programação subjacente no código de chamada.
Mecanismo de Passagem e Tipo de Elemento
A escolha do mecanismo de passagem não é a mesma que a classificação do tipo de elemento subjacente. Passar por valor ou por referência refere-se àquilo que o Visual Basic fornece ao código de procedimento. Um tipo de valor ou tipo de referência refere-se a como um elemento de programação é armazenado na memória.
No entanto, o mecanismo de passagem e o tipo de elemento são inter-relacionados. O valor de um tipo de referência é um ponteiro para os dados em outro lugar na memória. Isso significa que, quando você passa um tipo de referência por valor, o código de procedimento tem um ponteiro para os dados do elemento subjacente, mesmo que ele não possa acessar o próprio elemento subjacente. Por exemplo, se o elemento for uma variável de matriz, o código de procedimento não terá acesso à variável em si, mas poderá acessar os membros da matriz.
Capacidade de modificar
Quando você passa um elemento não modificável como um argumento, o procedimento nunca pode modificá-lo no código de chamada, seja ele passado ByVal
ou ByRef
.
Para um elemento modificável, a tabela a seguir 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 alterar a variável ou qualquer um de seus membros. | O procedimento pode alterar a variável e seus membros. |
Tipo de referência (contém um ponteiro para uma instância de classe ou estrutura) | O procedimento não pode alterar a variável, mas pode alterar os membros da instância para a qual ela aponta. | O procedimento pode alterar a variável e os membros da instância para a qual ela aponta. |
Consulte também
- Procedimentos
- Parâmetros e Argumentos de Procedimento
- Como passar argumentos para um procedimento
- Passar argumentos por valor e por referência
- Diferenças entre argumentos modificáveis e não modificáveis
- Como alterar o valor de um argumento de procedimento
- Como proteger um argumento de procedimento contra alterações de valor
- Como fazer: forçar um argumento a ser passado por valor
- Passando argumentos por posição e por nome
- Tipos de Valores e Tipos de Referências