Partager via


ByVal (Visual Basic)

Spécifie qu’un argument est passé par valeur, afin que la procédure ou la propriété appelée ne puisse 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.

Remarque

Comme il s’agit de la valeur par défaut, vous n’avez pas à spécifier explicitement le mot clé dans les ByVal signatures de méthode. Il a tendance à produire du code bruyant et conduit souvent au mot clé non par défaut ByRef négligé.

Remarques

Le ByVal modificateur peut être utilisé dans ces contextes :

Declare, instruction

Instruction de fonction

Déclaration de l'opérateur

Property Statement

Sous-énoncé

Exemple :

L’exemple suivant illustre l’utilisation du mécanisme de passage de ByVal paramètre 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 dans les procédures de modifier la valeur sous-jacente de l’argument de référence, c1mais 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

Voir aussi