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:
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 c1
het argument , een exemplaar van klasse Class1
. ByVal
voorkomt dat de code in de procedures de onderliggende waarde van het verwijzingsargument wijzigt, c1
maar 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