Delen via


ByVal (Visual Basic)

Hiermee geeft u op dat een argument wordt doorgegeven door een waarde, zodat de aangeroepen procedure of eigenschap de waarde van een variabele die het argument in de aanroepcode niet kan wijzigen. Als er geen wijzigingsfunctie is opgegeven, is ByVal de standaardinstelling.

Notitie

Omdat dit de standaardwaarde is, hoeft u het ByVal trefwoord niet expliciet op te geven in methodehandtekeningen. Het produceert meestal luidruchtige code en leidt vaak tot het niet-standaardwoord ByRef dat over het hoofd wordt gezien.

Opmerkingen

De ByVal wijzigingsfunctie kan in deze contexten worden gebruikt:

Instructie declareren

Functie-instructie

Operatorinstructie

Eigenschapsinstructie

Subinstructie

Opmerking

In het volgende voorbeeld ziet u het gebruik van het ByVal mechanisme voor het doorgeven van parameters met een verwijzingstypeargument. In het voorbeeld is c1het argument , een exemplaar van klasse Class1. ByVal voorkomt dat de code in de procedures de onderliggende waarde van het verwijzingsargument wijzigt, c1maar beveiligt de toegankelijke velden en eigenschappen van 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

Zie ook