Partager via


Paramètres facultatifs (Visual Basic)

Vous pouvez spécifier qu’un paramètre de procédure est facultatif et qu’aucun argument ne doit être fourni pour celui-ci lorsque la procédure est appelée. Les paramètres facultatifs sont indiqués par le Optional mot clé dans la définition de procédure. Les règles suivantes s’appliquent :

  • Chaque paramètre facultatif dans la définition de 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.

  • Chaque paramètre suivant un paramètre facultatif dans la définition de procédure doit également être facultatif.

La syntaxe suivante montre une déclaration de procédure avec un paramètre facultatif :

Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

Appels de procédures avec des paramètres facultatifs

Lorsque vous appelez une procédure avec un paramètre facultatif, vous pouvez choisir de fournir l’argument. Si ce n’est pas le cas, la procédure utilise la valeur par défaut déclarée pour ce paramètre.

Lorsque vous omettez un ou plusieurs arguments facultatifs dans la liste d’arguments, vous utilisez des virgules successives pour marquer leurs positions. L’exemple d’appel suivant fournit les premier et quatrième arguments, mais pas le deuxième ou le troisième :

Sub name(argument 1, , , argument 4)  

L’exemple suivant effectue plusieurs appels à la MsgBox fonction. MsgBox a un paramètre obligatoire et deux paramètres facultatifs.

Premier appel pour MsgBox fournir les trois arguments dans l’ordre qui MsgBox les définit. Le deuxième appel fournit uniquement l’argument requis. Les troisième et quatrième appels fournissent les premiers et troisième arguments. Le troisième appel effectue cette opération par position, et le quatrième appel le fait par son 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. Si vous devez faire cette distinction, vous pouvez définir une valeur peu probable comme valeur par défaut. La procédure suivante définit le paramètre officefacultatif et teste sa valeur par défaut, QJZpour 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 de référence tel qu’un String, vous pouvez utiliser Nothing comme valeur par défaut, à condition qu’il ne s’agit pas d’une valeur attendue pour l’argument.

Paramètres facultatifs et surcharge

Une autre façon de définir une procédure avec des paramètres facultatifs consiste à utiliser la surcharge. Si vous avez un paramètre facultatif, vous pouvez définir deux versions surchargées de la procédure, l’une acceptant le paramètre et l’autre sans celui-ci. Cette approche devient plus compliquée à mesure que le nombre de paramètres facultatifs augmente. Toutefois, son avantage est que vous pouvez être absolument sûr de savoir si le programme appelant a fourni chaque argument facultatif.

Voir aussi