Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Určuje, že argument je předán hodnotou, takže volaná procedura nebo vlastnost nemůže změnit hodnotu proměnné, která je základem argumentu ve volajícím kódu. Pokud není zadán žádný modifikátor, je ByVal výchozí.
Poznámka:
Vzhledem k tomu, že se jedná o výchozí hodnotu, nemusíte explicitně zadávat ByVal klíčové slovo v podpisech metody. Obvykle vytváří hlučný kód a často vede k přehlédnutí jiného než výchozího ByRef klíčového slova.
Poznámky
ByVal Modifikátor lze použít v těchto kontextech:
Příklad
Následující příklad ukazuje použití ByVal mechanismu předávání parametrů s argumentem typu odkazu. V příkladu je c1argument , instance třídy Class1.
ByVal zabraňuje kódu v procedurách změnit podkladovou hodnotu argumentu odkazu, c1ale nechrání přístupná pole a vlastnosti 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