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.
Surcharger une procédure signifie la définir dans plusieurs versions, à l’aide du même nom mais de listes de paramètres différentes. L’objectif de la surcharge est de définir plusieurs versions étroitement liées d’une procédure sans avoir à les différencier par leur nom. Pour ce faire, vous pouvez varier la liste des paramètres.
Règles de surcharge
Lorsque vous surchargez une procédure, les règles suivantes s’appliquent :
Même nom. Chaque version surchargée doit utiliser le même nom de procédure.
Signature différente. Chaque version surchargée doit différer de toutes les autres versions surchargées dans au moins l’un des aspects suivants :
Nombre de paramètres
Ordre des paramètres
Types de données des paramètres
Nombre de paramètres de type (pour une procédure générique)
Type de retour (uniquement pour un opérateur de conversion)
Avec le nom de la procédure, les éléments précédents sont collectivement appelés signature de la procédure. Lorsque vous appelez une procédure surchargée, le compilateur utilise la signature pour vérifier que l’appel correspond correctement à la définition.
Éléments qui ne font pas partie de la signature. Vous ne pouvez pas surcharger une procédure sans modifier la signature. En particulier, vous ne pouvez pas surcharger une procédure en variant un ou plusieurs des éléments suivants :
Mots clés de modificateur de procédure, tels que
Public
,Shared
etStatic
Noms de paramètres de paramètre ou de type
Contraintes de paramètre de type (pour une procédure générique)
Mots clés de modificateur de paramètres, tels que
ByRef
etOptional
Indique si elle retourne une valeur
Type de données de la valeur de retour (à l’exception d’un opérateur de conversion)
Les éléments de la liste précédente ne font pas partie de la signature. Bien que vous ne puissiez pas les utiliser pour différencier les versions surchargées, vous pouvez les varier entre les versions surchargées qui sont correctement différenciées par leurs signatures.
argumentsLate-Bound. Si vous envisagez de passer une variable d’objet liée tardive à une version surchargée, vous devez déclarer le paramètre approprié en tant que Object.
Plusieurs versions d’une procédure
Supposons que vous écrivez une Sub
procédure pour publier une transaction par rapport au solde d’un client et que vous souhaitez pouvoir faire référence au client par nom ou par numéro de compte. Pour ce faire, vous pouvez définir deux procédures différentes Sub
, comme dans l’exemple suivant :
Sub postName(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Versions surchargées
Une alternative consiste à surcharger un nom de procédure unique. Vous pouvez utiliser le mot clé Overloads pour définir une version de la procédure pour chaque liste de paramètres, comme suit :
Overloads Sub post(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Surcharges supplémentaires
Si vous souhaitez également accepter un montant de transaction dans l’une ou l’autre Decimal
, Single
vous pouvez post
surcharger davantage pour permettre cette variation. Si vous l’avez fait pour chacune des surcharges de l’exemple précédent, vous avez quatre Sub
procédures, avec le même nom, mais avec quatre signatures différentes.
Avantages de la surcharge
L'avantage de la surcharge d'une procédure réside dans la flexibilité de l'appel. Pour utiliser la post
procédure déclarée dans l’exemple précédent, le code appelant peut obtenir l’identification du client sous la forme d’un ou d’un String
Integer
, puis appeler la même procédure dans les deux cas. L'exemple suivant illustre ce mécanisme :
Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
accountNum = CInt(customer)
Call post(accountNum, amount)
Catch
Call post(customer, amount)
End Try
Voir aussi
- Procédures
- Comment : définir plusieurs versions d’une procédure
- Comment appeler une procédure surchargée
- Comment : surcharger une procédure qui accepte des paramètres facultatifs
- Comment : surcharger une procédure qui prend un nombre indéfini de paramètres
- Considérations relatives à la surcharge des procédures
- Résolution de surcharge
- Surcharges
- Types génériques en Visual Basic