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. paramètres facultatifs sont indiqués par le mot clé Optional dans la définition de 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 name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

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, et teste sa valeur par défaut, QJZ, pour voir 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 méthode permettant de définir une procédure à l'aide de 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