Présentation
Dans nos fonction qui acceptent des paramètres on passe souvent ces paramètres sans faire attention de la façon avec laquelle on les passe, est ce que par valeur (ByVal) ou bien par référence (ByRef) et pourtant c'est quelque chose très important de choisir entre les passés "ByVal" ou bien "ByRef" puisque ça peut changer beaucoup de change et c'est ce qu on va voir au cours de ce tutorial et on va essayer de répondre de quelque questions genre de "c'est quoi la différence entre "ByVal" et "ByRef"? et ce qu ils peuvent être remplaçable? et on vas parcourir à un exemple qui va éclaircir tout ça
ByVal : Par Valeur :
Passer une variable à une fonction quelconque par valeur veux dire qu'on passe juste un copie de cette variable ou bien plus précisément sa valeur qui peut être traiter par la fonction de plusieurs façon soit assigné sa valeur à une autre variable soit l utiliser d'une autre façon, mais on peut jamais changer sa valeur puisque même si on affecte une modification au variable la modification ne sera effectué que sure la variable local du fonction et non pas sur la variable principale qui a été passer comme paramètre à notre fonction.
ByRef : Par Référence :
Passer une variable à une fonction par référence permet a cette fonction d'affecter des modification à cette variable (c'est à dire la variable principale également) et ça peut être utiliser par exemple dans une Sub qui ne renvoi pas de valeur mais juste affecte des opération sur les variables passer , on va voir un exemple pour bien comprendre la notion de ces deux mot clé
Si on a une fonction qui peut accepter que ses paramètres soit passer ByVal alors on peut utiliser a la place de ByVal le mot clé ByRef mais le contraire ne peut pas être valide parce que si une fonction demande qu'une variable soit y passer en tant que référence alors elle veux l'affecter une nouvelle valeur ce qui ne peut pas être faite si la variable et passer par valeur
Exemple
Dans cette exemple on va crée une Sub qui n aura pas de valeur à renvoyer bien sure ce SUB aura le nom SWAP ça fonction et de donner la valeur de X à Y et la valeur de Y à X ...
La Déclaration du SUB sera comme ca :
Public Sub SWAP(ByRef X As Integer, ByRef Y As Integer)
Dim Tmp As Integer
Tmp = X
X = Y
Y = Tmp
End Sub
Ici on déclare les paramètres par référence
L'appel du SUB sera :
Dim X As Integer = 10
Dim Y As Integer = 20
SAWP(X, Y)
Msgbox " X Value = " & X & VbCrlf & " Y Value = " & Y
on a bien passer à la fonction SWAP deux variable qui son (X=10 et Y=20) alors la SUB SWAP va alors changer la valeur de ces deux variable alors le MsgBox affichera :
X Value = 20
Y Value = 10
alors les valeurs des variables principaux passés au fonction SWAP ont été changer
mais si on écrit "ByVal" à la place de "ByRef" le MsgBox affichera :
X Value = 10
Y Value = 20
Alors la fonction ne changera pas les valeurs des variables
P.S : ce truc et valable pour VB.NET et également pour le VB 6
Aller c'est tout :)