A diferença entre ByVal e ByRef - Tudo sobre como trabalhar com um computador
No Visual Basic, o mecanismo de passagem passa os argumentos para um procedimento. Este mecanismo de passagem é especificado com uma de duas palavras-chave: "ByVal" ou "ByRef . "Estas palavras-chave permitem especificar se o valor de um argumento é passado, ou se uma referência ao valor de um argumento é passada pelo mecanismo do procedimento. Avalie o tipo de funcionalidade que você precisa e designe a palavra que melhor se adequa a esse tipo de funcionalidade. O que é "ByVal"?
"ByVal" é a palavra-chave que indica o mecanismo de passagem para passar o valor de um argumento a um procedimento. Quando você passa um argumento por valor, o Visual Basic copia o valor e o insere em uma variável local dentro do procedimento . A palavra-chave "ByVal" é válida em declarações "declare", declarações "function", declarações "command", declarações "property" e declarações "SUB". Independentemente do tipo de declaração, a palavra-chave "ByVal" refere-se sempre ao mecanismo de passagem.
"ByRef" é a palavra-chave que diz ao mecanismo de passagem para passar o argumento por referência, também chamado de ponteiro na documentação dos fundamentos da programação. Isto é feito através de uma referência directa ao argumento do procedimento. "ByRef é a especificação padrão ao passar um argumento, mas a especificação deve ser incluída para tornar o código mais fácil de ler para outros. A palavra-chave "ByRef" é válida em declarações "declare", declarações "function", e declarações "sub". Tal como "ByVal", "ByRef" refere-se sempre ao mecanismo de passagem, independentemente do tipo de declaração.
Usando "ByRef" e "ByVal"
As palavras-chave que você usa dependem da funcionalidade que você precisa e com o que você está trabalhando. Arrays devem ser passados por referência, assim você nem sempre usa "ByRef" com um array. Se você quiser evitar qualquer modificação do argumento e seu elemento, você pode usar o "ByVal". Isto é porque "ByVal" não permite modificações. Se você não precisa fazer mudanças, use "ByRef".
"ByRef" vs "ByVal"
A principal diferença entre "ByRef" e "ByVal" é que "ByRef" permite que o elemento de tese seja modificado e "ByVal" não. "ByVal só passa um valor, onde ByRef passa uma conexão. "ByVal protege o argumento e seu elemento de mudança e ByRef fornece acesso para fins de modificação". "ByRef" é preferível para performance onde grandes quantidades de código estão envolvidas no argumento porque "ByVal" teria que copiar todo o código ao passá-lo para o procedimento .