Paramêtros no VB: ByVal, que raios é isso?

14 views
Skip to first unread message

Marcos

unread,
Apr 21, 2011, 4:19:55 PM4/21/11
to etecpg 2ª semestre 2010
Fala galera

Bom, vocês já devem ter reparado um tal de ByVal no início do código
de cada objeto, ali no paramêtro. Bom ele também tem um "irmão"
chamado ByRef, e aqui venho explicar sobre a paramêtros no VB e estes
dois comandos.

PARAMÊTRO

No VB, o paramêtro funciona como qualquer outra linguagem, e nele é
possível passar desde tipo simples de variáveis a objetos como um
botão ou uma combobox.
Exemplos poderão ser vistos na explicação de ByVal e ByRef.

BYVAL

O ByVal é o paramêtro mais comum. Na utlização deste comando, as
variáveis ou objetos, são passados como uma cópia por paramêtro e o
original não é alterado. Vamos a um exemplo:

Public Function divisao(ByVal a As Double, ByVal b As Double)
If (b = 0) Then
Return "Não Existe divisão por zero"
Else
a = a / b
Return a
End If
End Function

Public Sub numeros()
Dim a, b As Double
a = 50
b = 10
MessageBox.Show(divisao(a, b))
MessageBox.Show(divisao(a, b))
MessageBox.Show(divisao(a, b))
End Sub

No código acima, todas as messageBox exibirão 5, pois o valor de a,
que é 50, nunca foi alterado, já que o paramêtro a é uma cópia da
variável a.

BYREF

O ByRef é utilizado não para passar uma cópia da variável ou objeto e
sim ele própriamente dito.
Vamos repetir o mesmo exemplo, porém agora com ByRef.

Public Function divisao(ByRef a As Double, ByVal b As Double)
If (b = 0) Then
Return "Não Existe divisão por zero"
Else
a = a / b
Return a
End If
End Function

Public Sub numeros()
Dim a, b As Double
a = 50
b = 10
MessageBox.Show(divisao(a, b))
MessageBox.Show(divisao(a, b))
MessageBox.Show(divisao(a, b))
End Sub

Nesse caso a foi literalmente passado por paramêtro, deste modo será
exibido 5 na primeira MessageBox, 0,5 na segunda e 0,05 na terceira.
Isso acontece porque a foi passado para outro lado como referência
(ByRef) e não apenas como seu valor (ByVal), ou seja, o que foi
passado pro paramêtro é o mesmo espaço de memória da variável e não
uma cópia com o mesmo valor. Assim sendo, se mudarmos o valor do
paramêtro, mudamos o valor da variável.

Aé a próxima, que será uma breve explicação do Handles.

Marcos Costa




Marcos

unread,
Apr 21, 2011, 4:26:19 PM4/21/11
to etecpg 2ª semestre 2010
ByVal txt As System.Windows.Form.Textbox é um paramêtro mais avançado,
pois estou passando uma textbox inteira.
É bom pra quando precisamos fazer algo como mudar alguma coisa em
várias text_box de forma semelhante. Mas ai recomendo utilizar o ByRef
e não o ByVal, já que ai mudaremos a cópia, que depois se perderá e
não afeterá a texbox passada de nenhuma maneira.
Reply all
Reply to author
Forward
0 new messages