ByVal (Visual Basic)
Indica que un argumento se pasa de tal forma que el procedimiento o la propiedad a la que se ha llamado no puede cambiar el valor de una variable subyacente al argumento en el código que realiza la llamada.
Comentarios
El modificador ByVal se puede utilizar en estos contextos:
Function (Instrucción, Visual Basic)
Sub (Instrucción, Visual Basic)
Ejemplo
En el ejemplo siguiente se muestra el uso del mecanismo de paso del parámetro ByVal con un argumento de tipo de referencia. En el ejemplo, el argumento es c1, una instancia de la clase Class1. ByVal evita que el código en los procedimientos cambie el valor subyacente del argumento de referencia, c1, pero no protege las propiedades y campos accesibles de c1.
Module Module1
Sub Main()
' Declare an instance of the class and assign a value to its field.
Dim c1 As Class1 = New Class1()
c1.Field = 5
Console.WriteLine(c1.Field)
' Output: 5
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module
Vea también
Conceptos
Pasar argumentos por valor y por referencia (Visual Basic)