Share via


ByVal (Visual Basic)

Specifica che un argomento viene passato in modo tale che la routine o la proprietà chiamata non sia in grado di modificare il valore della variabile sottostante nel codice chiamante.

Note

Il modificatore ByVal può essere utilizzato nei seguenti contesti:

Istruzione Declare

Istruzione Function (Visual Basic)

Istruzione Operator

Istruzione Property

Istruzione Sub (Visual Basic)

Esempio

Nell'esempio seguente viene illustrato l'utilizzo del meccanismo di passaggio del parametro ByVal con un argomento del tipo di riferimento.Nell'esempio l'argomento è c1, un'istanza della classe Class1.ByVal impedisce al codice nelle routine di modificare il valore sottostante dell'argomento di riferimento, c1, ma non protegge i campi e le proprietà accessibili di 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

Vedere anche

Concetti

Passaggio di argomenti per valore e per riferimento (Visual Basic)

Altre risorse

Parole chiave (Visual Basic)