Comment : surcharger une procédure qui accepte des paramètres optionnels (Visual Basic)
Si une procédure a un ou plusieurs paramètres facultatifs , vous ne pouvez pas définir une version surchargée correspondant à l’une de ses surcharges implicites. Pour plus d’informations, consultez « Surcharges implicites pour les paramètres facultatifs » dans Considérations relatives aux procédures de surcharge.
Un paramètre facultatif
Pour surcharger une procédure qui prend un paramètre facultatif
Écrivez une instruction de déclaration
Sub
ouFunction
qui inclut le paramètre facultatif dans la liste des paramètres. N’utilisez pas le mot cléOptional
dans cette version surchargée.Précédez le mot clé
Sub
ouFunction
avec le mot clé Overloads .Écrivez le code de procédure qui doit s’exécuter lorsque le code appelant fournit l’argument facultatif.
Terminez la procédure avec l’instruction
End Sub
ouEnd Function
le cas échéant.Écrivez une deuxième instruction de déclaration identique à la première déclaration, sauf qu’elle n’inclut pas le paramètre facultatif dans la liste des paramètres.
Écrivez le code de procédure qui doit s’exécuter lorsque le code appelant ne fournit pas l’argument facultatif. Terminez la procédure avec l’instruction
End Sub
ouEnd Function
le cas échéant.L’exemple suivant montre une procédure définie avec un paramètre facultatif, un ensemble équivalent de deux procédures surchargées, et enfin des exemples de versions surchargées non valides et valides.
Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads. ' Overloads Sub q(ByVal b As Byte) ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use. ' Overloads Sub q(ByVal c As Byte, ByVal k As Long) ' The following overload uses a different signature and is valid. Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
Paramètres facultatifs multiples
Pour une procédure avec plusieurs paramètres facultatifs, vous avez normalement besoin de plus de deux versions surchargées. Par exemple, s’il existe deux paramètres facultatifs et que le code appelant peut fournir ou omettre chacun d’eux indépendamment de l’autre, vous avez besoin de quatre versions surchargées, une pour chaque combinaison possible d’arguments fournis.
À mesure que le nombre de paramètres facultatifs augmente, la complexité de la surcharge augmente. Sauf si certaines combinaisons d’arguments fournis ne sont pas acceptables, pour les paramètres facultatifs N, vous avez besoin de versions surchargées de 2 ^ N. Selon la nature de la procédure, vous pouvez constater que la clarté de la logique justifie l’effort supplémentaire de définition de toutes les versions surchargées.
Pour surcharger une procédure qui accepte plusieurs paramètres facultatifs
Déterminez quelles combinaisons d’arguments facultatifs fournis sont acceptables pour la logique de la procédure. Une combinaison inacceptable peut survenir si un paramètre facultatif dépend d’un autre. Par exemple, si un paramètre accepte le nom d’une personne et qu’un autre accepte l’âge de la personne, une combinaison d’arguments fournissant l’âge, mais l’omission du nom est inacceptable.
Pour chaque combinaison acceptable d’arguments facultatifs fournis, écrivez une instruction de déclaration
Sub
ouFunction
qui définit la liste de paramètres correspondante. N’utilisez pas le mot cléOptional
.Dans chaque déclaration, faites précéder le mot clé
Sub
ouFunction
par le mot clé Overloads.Après chaque déclaration, écrivez le code de procédure qui doit s’exécuter lorsque le code appelant fournit une liste d’arguments correspondant à la liste des paramètres de cette déclaration.
Terminez chaque procédure avec l’instruction
End Sub
ouEnd Function
, le cas échéant.
Voir aussi
- Procédures
- Paramètres et arguments d’une procédure
- Paramètres facultatifs
- tableaux de paramètres
- Surcharge de procédure
- Procédures de dépannage
- Comment : définir plusieurs versions d'une procédure
- Comment : appeler une procédure surchargée
- Comment : surcharger une procédure qui accepte un nombre indéfini de paramètres
- Résolution de surcharge