Byval (Visual Basic)
Spécifie qu’un argument a dépassé par valeur, de sorte que la procédure ou la propriété appelée ne peut pas modifier la valeur d'une variable sous-jacente à l'argument dans le code appelant. Si aucun modificateur n’est spécifié, ByVal est la valeur par défaut.
Notes
Comme il s’agit de la valeur par défaut, vous n’avez pas à spécifier explicitement le mot-clé ByVal
dans les signatures de méthode. Cela tend à produire un code bruyant et conduit souvent à négliger le mot-clé ByRef
qui n'est pas celui par défaut.
Notes
Le modificateur ByVal
peut être utilisé dans les contextes suivants :
Exemple
L’exemple suivant illustre l’utilisation du mécanisme de passage du paramètre ByVal
avec un argument de type référence. Dans l’exemple, l’argument est c1
, une instance de classe Class1
. ByVal
empêche le code des procédures de modifier la valeur sous-jacente de l’argument de référence, c1
, mais ne protège pas les champs et propriétés accessibles de 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