Entendo as Diferenças entre byval e byref

0

Para os que estão iniciando o mundo da programação, pode surgir algumas dúvidas quanto ao uso de parâmetros por referência e por valor. Este artigo tenta ajudar a entender a diferença e aplicação de seu conceito.

Quando vamos passar um parâmetro para um procedimento ou função, temos a opção de enviá-lo por referência(byref) ou por valor(byval).Quando passamos por valor, apenas indicamos ao procedimento que valor deverá ser utilizado.
Quando passamos por referência estamos indicando ao procedimento o espaço de memória em que ele poderá encontrar as informações necessárias. Isto indica que se o valor for modificado dentro do procedimento, o espaço em memória também será modificado.

Ex1: (ByRef) Neste exemplo os valores atribuídos dentro da Sub rgb serão retornados para o espaço em memória das variáveis vermelho, verde e azul.


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim vermelho As Integer
Dim verde As Integer
Dim azul As Integer
Call rgb(vermelho, verde, azul)
MsgBox(vermelho & "-"& verde & "-" & azul)

End Sub

Sub rgb(ByRef red As Integer,ByRef green As Integer, ByRef blue As Integer)
red = 10
green = 22
blue = 255
End Sub

Ex2: (Byval) Neste exemplo os valores atribuídos dentro da Sub rgb não serão retornados para o espaço em memória das variáveis vermelho, verde e azul.


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim vermelho As Integer
Dim verde As Integer
Dim azul As Integer
Call rgb(vermelho, verde, azul)
MsgBox(vermelho & "-"& verde & "-" & azul)

End Sub

Sub rgb(ByVal red As Integer,ByVal green As Integer, ByVal blue As Integer)

red = 10
green = 22
blue = 255

End Sub

0