ByVal (Visual Basic)
Megadja, hogy az argumentumot érték adja át, így a hívott eljárás vagy tulajdonság nem módosíthatja az argumentum alapjául szolgáló változó értékét a hívókódban. Ha nincs megadva módosító, akkor a ByVal az alapértelmezett érték.
Feljegyzés
Mivel ez az alapértelmezett érték, nem kell explicit módon megadnia a kulcsszót a ByVal
metódus-aláírásokban. Általában zajos kódot hoz létre, és gyakran a nem alapértelmezett ByRef
kulcsszó figyelmen kívül hagyásához vezet.
Megjegyzések
A ByVal
módosító az alábbi környezetekben használható:
Példa
Az alábbi példa a paraméterátadási ByVal
mechanizmus használatát mutatja be hivatkozástípus-argumentummal. A példában az argumentum az c1
osztály Class1
egy példánya. ByVal
megakadályozza, hogy az eljárások kódja módosítsa a referenciaargumentum mögöttes értékét, c1
de nem védi az akadálymentes mezőket és tulajdonságokat 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