Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous passez un ou plusieurs arguments à une procédure, chaque argument correspond à un élément de programmation sous-jacent dans le code appelant. Vous pouvez transmettre la valeur de cet élément sous-jacent ou une référence à celui-ci. C’est ce qu’on appelle le mécanisme de passage.
passer par valeur
Vous passez un argument par valeur en spécifiant le mot clé ByVal pour le paramètre correspondant dans la définition de procédure. Lorsque vous utilisez ce mécanisme de passage, Visual Basic copie la valeur de l’élément de programmation sous-jacent dans une variable locale dans la procédure. Le code de procédure n’a pas accès à l’élément sous-jacent dans le code appelant.
Passer par référence
Vous transmettez un argument par référence en spécifiant le mot clé ByRef pour le paramètre correspondant dans la définition de procédure. Lorsque vous utilisez ce mécanisme de passage, Visual Basic fournit à la procédure une référence directe à l’élément de programmation sous-jacent dans le code appelant.
Transmission d’un mécanisme et d’un type d’élément
Le choix du mécanisme de passage n’est pas identique à la classification du type d’élément sous-jacent. La transmission par valeur ou par référence fait référence à ce que Visual Basic fournit au code de procédure. Un type valeur ou un type référence fait référence à la façon dont un élément de programmation est stocké en mémoire.
Toutefois, le mécanisme de passage et le type d’élément sont liés. La valeur d’un type référence est un pointeur vers les données ailleurs dans la mémoire. Cela signifie que lorsque vous passez un type de référence par valeur, le code de procédure a un pointeur vers les données de l’élément sous-jacent, même s’il ne peut pas accéder à l’élément sous-jacent lui-même. Par exemple, si l’élément est une variable de tableau, le code de procédure n’a pas accès à la variable elle-même, mais il peut accéder aux membres du tableau.
Possibilité de modifier
Lorsque vous transmettez un élément non modifiable en tant qu’argument, la procédure ne peut jamais la modifier dans le code appelant, qu’elle soit passée ByVal
ou ByRef
.
Pour un élément modifiable, le tableau suivant récapitule l’interaction entre le type d’élément et le mécanisme de passage.
Type d’élément |
ByVal transmis |
ByRef transmis |
---|---|---|
Type valeur (contient uniquement une valeur) | La procédure ne peut pas modifier la variable ou l’un de ses membres. | La procédure peut modifier la variable et ses membres. |
Type de référence (contient un pointeur vers une instance de classe ou de structure) | La procédure ne peut pas modifier la variable, mais peut modifier les membres de l’instance vers laquelle elle pointe. | La procédure peut modifier la variable et les membres de l’instance vers laquelle elle pointe. |
Voir aussi
- Procédures
- Paramètres et arguments d’une procédure
- Procédure : passer des arguments à une procédure
- Passage d’arguments par valeur et par référence
- Différences entre les arguments modifiables et non modifiables
- Procédure : modifier la valeur d’un argument de procédure
- Guide pratique pour protéger un argument de procédure contre les modifications de valeur
- Procédure : forcer un argument à passer par valeur
- Passage d’arguments par position et par nom
- Types de valeurs et types de références