Partager via


Byval (Visual Basic)

Spécifie qu'un argument est passé de telle manière que la procédure ou la propriété appelée ne peut pas changer la valeur d'une variable sous-jacente à l'argument dans le code appelant.

Notes

Le modificateur ByVal peut être utilisé dans les contextes suivants :

Declare, instruction

Function, instruction (Visual Basic)

Operator, instruction

Property, instruction

Sub, instruction (Visual Basic)

Exemple

L'exemple suivant montre l'utilisation du paramètre ByVal qui passe le mécanisme avec un argument de type référence.Dans cet exemple, l'argument est c1, une instance de la classe Class1.ByVal empêche le code dans les procédures de modifier la valeur sous-jacente de l'argument de référence, c1, mais ne protège pas les champs et les 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 Class1 = 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

Concepts

Passage d'un argument par valeur et par référence (Visual Basic)

Autres ressources

Mots clés (Visual Basic)