Diferenças entre argumentos modificáveis e não modificáveis (Visual Basic)

Quando você chama um procedimento, normalmente passa um ou mais argumentos para ele. Cada argumento corresponde a um elemento de programação subjacente. Os elementos subjacentes e os próprios argumentos podem ser modificáveis ou não modificáveis.

Elementos modificáveis e não modificáveis

Um elemento de programação pode ser um elemento modificável, que pode ter seu valor alterado ou um elemento não modificável, que tem um valor fixo depois de ser criado.

A tabela a seguir lista elementos de programação modificáveis e não modificáveis.

Elementos modificáveis Elementos não modificáveis
Variáveis locais (declaradas dentro de procedimentos), incluindo variáveis de objeto, exceto somente leitura Variáveis, campos e propriedades somente leitura
Campos (variáveis membro de módulos, classes e estruturas), exceto para somente leitura Constantes e literais
Propriedades, exceto somente leitura Membros de enumeração
Elementos da matriz Expressões (mesmo que seus elementos sejam modificáveis)

Argumentos modificáveis e não modificáveis

Um argumento modificável é aquele com um elemento subjacente modificável. O código de chamada pode armazenar um novo valor a qualquer momento e, se você passar o argumento ByRef, o código no procedimento também poderá modificar o elemento subjacente no código de chamada.

Um argumento não modificável tem um elemento subjacente não modificável ou é passado por ByVal. O procedimento não pode modificar o elemento subjacente no código de chamada, mesmo que seja um elemento modificável. Se for um elemento não modificável, o próprio código de chamada não poderá modificá-lo.

O procedimento chamado pode modificar sua cópia local de um argumento não modificável, mas essa modificação não afeta o elemento subjacente no código de chamada.

Confira também