Passagem de parâmetros

Você lembra como era a passagem de parâmetros para funções/ procedimentos no VB 6.0 ??? Esqueceu ???

Vou refrescar sua memória .... !!!

No VB 6.0 quando passamos um parâmetro , se não for definido se o parâmetro é passado por valor - ByVal - ou por referência - ByRef - o VB assume como padrão que o parâmetro vai ser passado por referência (ByRef).

Você se lembra que quando passamos um parâmetro por referência o parâmero pode ter o seu valor alterado dentro da função/procedimento chamada. ? Deve lembrar também que isto pode trazer muitas dores de cabeça para você ...

Quer ver o porque ??? Então estudo o código abaixo e responda a seguinte pergunta :

" Qual vai ser o valor da variável X ??? "

Private Sub Form_Load()
Dim x As Integer
Dim y As Integer

x = 10
y = Passa_Parametro_Por_Referencia(x)

MsgBox " y é igual a " & y & vbCrLf & " x é igual a " & x, vbCritical, "Passagem de parametros ByRef"


End Sub		
Function Passa_Parametro_Por_Referencia(valor As Integer) As Integer

valor = valor + 10
Passa_Parametro_Por_Referencia = valor

End Function

Execute o projeto e você verá o seguinte resultado :

Percebeu que o valor da variável X foi alterado na função - Passa_Parametro_Por_Referencia

Isto acontece por que quando passamos a variável A como parâmetro para a função o VB 6.0 passou o parâmetro por referência , visto que não informamos nada a respeito.

No VB.NET não temos este problema por que o padrão da passagem de parâmetros no VB.NET é sempre Por Valor (ByVal)

O mesmo código acima executado no VB.NET irá retornar para a variável X o valor igual a 10. Ou seja o valor original da variável X é mantido após a chamada da função...

Então lembre-se o padrão da passagem de parâmetros no VB é sempre por valor.

até a próxima dica ...