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:

Declare (Instrucción)

Function (Instrucción, Visual Basic)

Operator (Instrucción)

Property (Instrucción)

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("Original value for the field: " & c1.Field)

        ' ByVal does not prevent changing the value of a field or property.
        ChangeFieldValue(c1)
        Console.WriteLine("Value of field after ChangeFieldValue: " & c1.Field)

        ' ByVal does prevent changing the value of c1 itself. 
        ChangeClassReference(c1)
        Console.WriteLine("Value of field after ChangeClassReference: " & c1.Field)

    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)

Otros recursos

Palabras clave de Visual Basic