Partilhar via


Argumento Passing By valor e por referência

In Visual Basic, você pode passar um argumento para um procedimento por valor or por referência.Isso é conhecido sistema autônomo a mecanismo para passar argumentos e ele determina se o procedimento pode modificar o elemento de programação subjacente do argumento no código de chamada.A declaração procedimento determina o mecanismo para passar argumentos para cada parâmetro especificando o ByVal ou ByRef palavra-chave.

Distinções

Ao passar um argumento para um procedimento, esteja ciente de várias distinções diferentes que interagem entre si:

  • Se o elemento de programação subjacente é modificável ou nonmodifiable

  • Se o próprio argumento pode ser modificado ou nonmodifiable

  • Se o argumento está sendo passado por valor ou referência

  • Se o argumento Tipo de dados é um tipo de valor ou um tipo de referência

Para obter mais informações, consulte Diferenças entre argumentos Modificáveis e Não Modificáveis e Diferenças entre passar um argumento por valor e por referência.

Opção de mecanismo para passar argumentos

Você deve escolher o mecanismo para passar argumentos cuidadosamente para cada argumento.

  • Proteção.Escolher entre os mecanismos de dois passagem, o critério mais importante é a exposição de chamar variáveis para alterar.A vantagem de passar um argumento ByRef é que o procedimento pode retornar um valor para o código de chamada através desse argumento. A vantagem de passar um argumento ByVal é que ele protege uma variável seja alterado pelo procedimento.

  • Desempenho.Embora o mecanismo para passar argumentos pode afetar o desempenho do seu código, a diferença é geralmente insignificante.Uma exceção a isso é um tipo de valor passado ByVal. Nesse caso, Visual Basic Copia o Sumário de todo o dados do argumento. Portanto, para um tipo de valor grande, sistema autônomo uma estrutura, ele pode ser mais eficiente para passar para ele ByRef.

    Para tipos de referência, apenas o ponteiro para os dados é copiados (quatro bytes em plataformas de 32 bit, oito bytes em plataformas de 64 bit).Portanto, você pode passar argumentos de tipo String ou Object por valor sem prejudicar o desempenho.

Determinação do mecanismo para passar argumentos

A declaração procedimento especifica o mecanismo para passar argumentos para cada parâmetro.O código de telefonar não é possível substituir um ByVal mecanismo, mas se um parâmetro é declarado com ByRef, o código de telefonar pode forçar o mecanismo para ByVal incluindo o nome do argumento entre parênteses na telefonar.

O padrão no Visual Basic é passar argumentos por valor.Você pode facilitar seu código ler usando o ByVal palavra-chave. É recomendável prática para incluir qualquer uma de programação o ByVal ou ByRef palavra-chave com todos os parâmetros declarados.

Quando a passar um argumento por valor

  • Se o elemento de código chamada subjacente do argumento é um elemento nonmodifiable, declare o parâmetro correspondente ByVal. Nenhum código pode alterar o valor de um elemento nonmodifiable.

  • Se o elemento subjacente é modificado, mas desejar o procedimento para alterar seu valor, declare o parâmetro ByVal. Somente o código de chamada pode alterar o valor de um elemento pode ser modificado passado por valor.

Quando a passar um argumento por referência

  • Se o procedimento tenha uma necessidade original para alterar o elemento base no código de chamada, declare o parâmetro correspondente ByRef.

  • Se a execução correta do código depende do procedimento alterar o elemento base no código de chamada, declare o parâmetro ByRef. Se você passar por valor ou se o código de telefonar substitui o ByRef mecanismo para passar argumentos, incluindo o argumento entre parênteses, a telefonar de procedimento pode produzir resultados inesperados.

Consulte também

Tarefas

Como: Passar argumentos para um procedimento

Como: Alterar o valor de um argumento de procedimento

Como: Proteger um argumento de procedimento contra alterações de valor

Como: Forçar um argumento para ser passada por valor

Conceitos

Procedimentos no Visual Basic

Parâmetros do procedimento e argumentos

Passagem de Argumentos por Posição e Nome

Tipos de valores e tipos de referências