Condividi tramite


ByVal (Visual Basic)

Specifica che un argomento viene passato per valore, in modo che la routine o la proprietà chiamata non possa modificare il valore di una variabile sottostante l'argomento nel codice chiamante. Se non viene specificato alcun modificatore, ByVal è l'impostazione predefinita.

Annotazioni

Poiché è l'impostazione predefinita, non è necessario specificare in modo esplicito la parola chiave nelle firme del ByVal metodo. Tende a produrre codice rumoroso e spesso porta alla parola chiave non predefinita ByRef trascurata.

Osservazioni:

Il ByVal modificatore può essere usato in questi contesti:

Declare Statement

Dichiarazione di Funzione

Dichiarazione dell'Operatore

Dichiarazione di proprietà

Dichiarazione Sub

Esempio

Nell'esempio seguente viene illustrato l'uso del meccanismo di passaggio del ByVal parametro con un argomento di tipo riferimento. Nell'esempio l'argomento è c1, un'istanza della classe Class1. ByVal impedisce al codice nelle procedure 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 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