Partager via


Passage d’arguments par position et par nom (Visual Basic)

Lorsque vous appelez une Sub ou Function une procédure, vous pouvez passer des arguments par position ( dans l’ordre dans lequel ils apparaissent dans la définition de la procédure) ou vous pouvez les passer par nom, sans tenir compte de la position.

Lorsque vous passez un argument par nom, vous spécifiez le nom déclaré de l’argument suivi d’un signe deux-points et d’un signe égal (:=), suivi de la valeur de l’argument. Vous pouvez fournir des arguments nommés dans n’importe quel ordre.

Par exemple, la procédure suivante Sub prend trois arguments :

Public Class StudentInfo
    Shared Sub Display(name As String,
                Optional age As Short = 0,
                Optional birth As Date = #1/1/2000#)

        Console.WriteLine($"Name = {name}; age = {age}; birth date = {birth:d}")
    End Sub
End Class

Lorsque vous appelez cette procédure, vous pouvez fournir les arguments par position, par nom ou à l’aide d’un mélange des deux.

Passage d’arguments par position

Vous pouvez appeler la Display méthode avec ses arguments passés par position et délimités par des virgules, comme illustré dans l’exemple suivant :

StudentInfo.Display("Mary", 19, #9/21/1998#)

Si vous omettez un argument facultatif dans une liste d’arguments positionnels, vous devez conserver sa place avec une virgule. L’exemple suivant appelle la Display méthode sans l’argument age :

StudentInfo.Display("Mary",, #9/21/1998#)

Passage d’arguments par nom

Vous pouvez également appeler Display avec les arguments passés par nom, également délimités par des virgules, comme illustré dans l’exemple suivant :

StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")

Le passage d’arguments par nom est particulièrement utile lorsque vous appelez une procédure comportant plusieurs arguments facultatifs. Si vous fournissez des arguments par nom, vous n’avez pas besoin d’utiliser des virgules consécutives pour indiquer les arguments positionnels manquants. Le passage d’arguments par nom facilite également le suivi des arguments que vous passez et ceux que vous omettez.

Mélange d’arguments par position et par nom

Vous pouvez fournir des arguments à la fois par position et par nom dans un appel de procédure unique, comme illustré dans l’exemple suivant :

StudentInfo.Display("Mary", birth:=#9/21/1998#)

Dans l’exemple précédent, aucune virgule supplémentaire n’est nécessaire pour contenir la place de l’argument omis age , car birth elle est passée par nom.

Dans les versions de Visual Basic antérieures à la version 15.5, lorsque vous fournissez des arguments par un mélange de position et de nom, les arguments positionnels doivent tous être fournis en premier. Une fois que vous avez fourni un argument par nom, tous les arguments restants doivent tous être passés par nom. Par exemple, l’appel suivant à la méthode affiche l’erreur du Display compilateur BC30241 : argument nommé attendu.

StudentInfo.Display("Mary", age:=19, #9/21/1998#)

À compter de Visual Basic 15.5, les arguments positionnels peuvent suivre les arguments nommés si les arguments positionnels de fin sont dans la position correcte. Si elle est compilée sous Visual Basic 15.5, l’appel précédent à la Display méthode se compile correctement et ne génère plus d’erreur de compilateur BC30241.

Cette possibilité de combiner et de mettre en correspondance des arguments nommés et positionnels dans n’importe quel ordre est particulièrement utile lorsque vous souhaitez utiliser un argument nommé pour rendre votre code plus lisible. Par exemple, le constructeur de classe suivant Person nécessite deux arguments de type Person, dont les deux peuvent être Nothing.

Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)

L’utilisation d’arguments nommés et positionnels mixtes permet d’effacer l’intention du code lorsque la valeur des father arguments et mother des arguments est Nothing:

Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)

Pour suivre les arguments positionnels avec des arguments nommés, vous devez ajouter l’élément suivant à votre fichier de projet Visual Basic (*.vbproj) :

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Pour plus d’informations, consultez la définition de la version du langage Visual Basic.

Restrictions relatives à l’approvisionnement d’arguments par nom

Vous ne pouvez pas passer d’arguments par nom pour éviter d’entrer des arguments requis. Vous ne pouvez omettre que les arguments facultatifs.

Vous ne pouvez pas passer un tableau de paramètres par nom. Cela est dû au fait que lorsque vous appelez la procédure, vous fournissez un nombre indéfini d’arguments séparés par des virgules pour le tableau de paramètres, et le compilateur ne peut pas associer plusieurs arguments à un seul nom.

Voir aussi