Paramètres facultatifs (Visual Basic)
Vous pouvez spécifier qu'un paramètre de procédure est facultatif et qu'il n'est pas nécessaire de fournir un argument lorsque la procédure est appelée.Les arguments facultatifs sont indiqués à l'aide du mot clé Optional dans la définition de la procédure.Les règles suivantes s'appliquent :
Chaque paramètre facultatif dans la définition de la procédure doit spécifier une valeur par défaut.
La valeur par défaut d'un paramètre facultatif doit être une expression constante.
Tous les paramètres qui suivent un paramètre facultatif dans la définition de la procédure doivent également être facultatifs.
La syntaxe suivante montre une déclaration de procédure comprenant un paramètre facultatif :
Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)
Appel de procédures à l'aide de paramètres facultatifs
Lorsque vous appelez une procédure à l'aide d'un paramètre facultatif, vous pouvez choisir de fournir l'argument ou non.Dans le cas contraire, la procédure utilise la valeur par défaut déclarée pour ce paramètre.
Pour omettre un ou plusieurs arguments facultatifs dans la liste des arguments, utilisez des virgules successives afin de marquer leurs positions.L'exemple d'appel suivant fournit le premier et le quatrième argument, mais pas le deuxième ni le troisième :
sub name(argument 1, , , argument 4)
L'exemple suivant effectue plusieurs appels à la fonction MsgBox.MsgBox comporte un paramètre obligatoire et deux paramètres facultatifs.
Le premier appel à MsgBox fournit les trois arguments dans l'ordre dans lequel MsgBox les définit.Le deuxième appel fournit uniquement l'argument requis.Le troisième et le quatrième appel fournissent le premier et le troisième argument.Le troisième appel le fait par position et le quatrième appel le fait par nom.
MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")
Détermination de la présence d'un argument facultatif
Une procédure ne peut pas détecter au moment de l'exécution si un argument donné a été omis ou si le code appelant a explicitement fourni la valeur par défaut.Pour établir cette distinction, vous pouvez définir une valeur improbable comme valeur par défaut.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 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.
Paramètres facultatifs et surcharge
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 avec le paramètre et l'autre sans.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.
Voir aussi
Référence
Concepts
Paramètres et arguments d'une procédure (Visual Basic)
Passage d'un argument par valeur et par référence (Visual Basic)
Passage des arguments par position et par nom (Visual Basic)