Comment : déterminer si un paramètre optionnel a été fourni
Mise à jour : novembre 2007
Lorsqu'une procédure définit un paramètre optionnel, il peut s'avérer nécessaire de déterminer si le code appelant a fourni ou omis l'argument correspondant.
Il y aurait deux raisons pour lesquelles la valeur de paramètre compare une valeur égale à sa valeur par défaut :
Le code appelant a omis l'argument dans l'appel de procédure ; ou
Le code appelant a fourni l'argument avec une valeur égale à la valeur par défaut du paramètre.
Le code de procédure ne peut pas faire la différence entre ces deux possibilités. Cela n'a généralement pas d'importance, mais dans certains cas la procédure doit prendre des mesures différentes pour chaque possibilité. La meilleure approche consiste à définir une valeur improbable comme valeur par défaut, bien que le code appelant puisse tout de même fournir cette valeur.
Si vous attachez une grande importance à ce que le programme appelant fournisse un argument facultatif, l'approche la plus sûre consiste à définir des versions surchargées de la procédure. Consultez Comment : définir plusieurs versions d'une procédure et Considérations sur les surcharges de procédures.
Pour déterminer si un argument est passé à un paramètre optionnel
Définissez une valeur extrêmement improbable comme valeur par défaut pour le paramètre.
Si le paramètre facultatif est un type référence tel que String, vous pouvez utiliser Nothing comme valeur par défaut, à condition qu'il ne s'agisse pas d'une valeur attendue pour l'argument.
Dans le code de procédure, comparez le paramètre à la valeur par défaut et prenez la mesure appropriée.
Surcharge d'une procédure avec et sans paramètre facultatif
La surcharge est une autre manière de définir une procédure avec des paramètres facultatifs. Si vous disposez d'un seul paramètre facultatif, vous pouvez définir deux versions surchargées de la procédure, l'une acceptant le paramètre et l'autre pas. Cette approche se complique au fur et à mesure que le nombre de paramètres facultatifs augmente. Cependant, vous avez l'avantage de savoir avec certitude si le programme appelant a fourni chaque argument facultatif.
Pour définir plusieurs versions de la procédure pour couvrir l'inclusion et omission d'un argument
Définissez une version de la procédure avec le paramètre dans la liste d'arguments. Ne déclarez pas le paramètre comme Optional.
Définissez une autre version de la procédure sans le paramètre. La déclaration doit être identique à celle de la première version dans tous les autres cas.
Placez le code approprié à chaque appel dans la version respective de la procédure.
Exemple
La procédure suivante définit le paramètre facultatif office, puis teste sa valeur par défaut, QJZ, pour déterminer s'il a été omis dans l'appel.
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
End Sub
Si le code appelant ne fournit pas de valeur pour office dans la liste d'arguments, Visual Basic fournit la valeur par défaut "QJZ".
Si le paramètre facultatif est un type référence tel que String, vous pouvez utiliser Nothing (Visual Basic) comme valeur par défaut, à condition qu'il ne s'agisse pas d'une valeur attendue pour l'argument.
Pour obtenir un exemple d'utilisation de surcharges pour déterminer si un paramètre optionnel est été passé, consultez Comment : surcharger une procédure qui accepte des paramètres optionnels.
Voir aussi
Tâches
Comment : définir des paramètres optionnels pour une procédure
Comment : appeler une procédure qui accepte des paramètres optionnels
Concepts
Paramètres et arguments d'une procédure
Passage d'arguments par valeur et par référence
Passage des arguments par position et par nom