Comment utiliser des paramètres nommés et facultatifs en C #

Microsoft a introduit la prise en charge des paramètres nommés et facultatifs dans C # 4.0. Alors qu'un paramètre nommé est utilisé pour spécifier un argument basé sur le nom de l'argument et non sur la position, un paramètre facultatif peut être utilisé pour omettre un ou plusieurs paramètres dans la signature de la méthode. Les paramètres d'une méthode peuvent être obligatoires ou facultatifs selon que vous devez ou non transmettre une valeur à ces paramètres lorsque la méthode est appelée.

Il convient de noter que les paramètres nommés et facultatifs peuvent être utilisés non seulement avec des méthodes mais aussi avec des indexeurs et des délégués. Cet article décrit ces deux fonctionnalités puissantes du langage de programmation C # et comment nous pouvons les utiliser.

Pour utiliser les exemples de code fournis dans cet article, vous devez disposer de Visual Studio 2019 installé sur votre système. Si vous n'en avez pas déjà une copie, vous pouvez télécharger Visual Studio 2019 ici.

Créer un projet d'application console dans Visual Studio

Tout d'abord, créons un projet d'application console .NET Core dans Visual Studio. En supposant que Visual Studio 2019 est installé sur votre système, suivez les étapes décrites ci-dessous pour créer un nouveau projet d'application console .NET Core dans Visual Studio.

  1. Lancez l'IDE de Visual Studio.
  2. Cliquez sur "Créer un nouveau projet".
  3. Dans la fenêtre «Créer un nouveau projet», sélectionnez «Application console (.NET Core)» dans la liste des modèles affichés.
  4. Cliquez sur Suivant.
  5. Dans la fenêtre «Configurer votre nouveau projet» ci-dessous, spécifiez le nom et l'emplacement du nouveau projet.
  6. Cliquez sur Créer.

Cela créera un nouveau projet d'application console .NET Core dans Visual Studio 2019. Nous utiliserons ce projet pour travailler avec des paramètres nommés et facultatifs dans les sections suivantes de cet article.

Utiliser des paramètres nommés en C #

Lorsque vous appelez une méthode, un constructeur, un indexeur ou un délégué, vous devez transmettre des arguments pour les paramètres requis, mais vous êtes libre d'omettre des arguments pour les paramètres qui ont été définis comme paramètres facultatifs.

Vous devrez souvent appeler une méthode qui a de nombreux paramètres. Et même lorsque vous appelez une telle méthode avec uniquement les paramètres requis, il est parfois extrêmement difficile de comprendre quel argument correspond à quel paramètre. Voici où les arguments nommés viennent à la rescousse.

Les arguments nommés dans le langage de programmation C # sont utilisés pour associer le nom d'argument d'une méthode à sa valeur - c'est-à-dire la valeur passée en argument lors de l'appel de la méthode. Il convient de noter que lors de l'utilisation d'un argument nommé, les arguments sont évalués dans le même ordre dans lequel ils ont été passés.

Regardons un exemple. Écrivez la méthode suivante nommée Add dans la classe Program de votre nouveau projet d'application console.

public static int Add (int x, int y, int z, int a, int b, int c)

{

   renvoie x + y + z + a + b + c;

}

Supposons que vous appeliez la méthode Add comme indiqué dans l'extrait de code ci-dessous.

static void Main (string [] args)

{

    Ajouter (5, 10);

}

Le code ci-dessus ne fonctionnera pas car il y a six paramètres obligatoires (aucun n'est des paramètres facultatifs) dans la signature de la méthode Add mais vous n'avez passé que deux arguments. L'erreur suivante vous sera présentée.

Par conséquent, vous êtes obligé de transmettre des valeurs à chacun des paramètres pour satisfaire l'appel, comme indiqué dans l'extrait de code ci-dessous.

static void Main (string [] args)

{

   Ajouter (5, 10, 8, 2, 3, 6);

}

Les choses se compliquent lorsque vous avez un mélange de types de données dans les paramètres d'une méthode. Pour illustrer cela, modifions notre méthode Add comme indiqué dans l'extrait de code suivant.

public static int Add (int x, int y, int z, double a, double b, double c)

{

    retourne x + y + z + Convert.ToInt32 (a) + Convert.ToInt32 (b) + Convert.ToInt32 (c);

}

Se souvenir des types de données des paramètres ainsi que de leur position est fastidieux. La solution consiste à tirer parti des arguments nommés et à transmettre des valeurs à la méthode comme indiqué dans l'extrait de code ci-dessous.

static void Main (string [] args)

{

    Ajouter (x: 5, y: 10, z: 8, a: 2,0, b: 3,0, c: 6,0);

}

Vous pouvez même modifier l'ordre des arguments nommés, comme indiqué dans l'extrait de code ci-dessous.

static void Main (string [] args)

{

    Ajouter (z: 8, x: 5, y: 10, c: 6, a: 2,0, b: 3,0);

}

Tant que vous nommez les arguments, vous pouvez les passer dans n'importe quel ordre et le compilateur ne signalera aucune erreur - c'est-à-dire que cela est parfaitement valide en C #.

Utiliser des paramètres facultatifs en C #

Les paramètres facultatifs du langage de programmation C # vous permettent de spécifier des arguments dans une signature de méthode que l'appelant de la méthode est libre d'omettre. En d'autres termes, alors que vous devez spécifier des valeurs pour les paramètres obligatoires, vous pouvez choisir de ne pas spécifier de valeurs pour les paramètres facultatifs. Dans certains cas, une valeur par défaut peut également être associée à un paramètre facultatif.

La valeur par défaut d'un paramètre facultatif peut avoir l'un des trois types de valeurs suivants: une expression constante, une expression qui est de la forme d'un type valeur ou une expression qui est de la forme par défaut (v) où v est une valeur type.

La méthode Add présentée dans l'extrait de code suivant illustre comment vous pouvez spécifier des arguments facultatifs pour une méthode en C #.

public static int Add (int x, int y = 0, int z = 0)

{

    retourne x + y + z;

}

Et voici comment vous pouvez appeler la méthode Add.

Ajouter (10);

Étant donné que deux des paramètres de la méthode Add sont facultatifs, vous pouvez transmettre une seule valeur entière à la méthode lors de son appel. Veillez à suivre le bon ordre de définition des paramètres dans une méthode. Les paramètres requis doivent venir en premier, suivis des paramètres facultatifs s'il en existe.

Des paramètres nommés et facultatifs ont été introduits dans le langage de programmation C # afin d'améliorer l'interopérabilité avec les API COM. L'utilisation de paramètres nommés peut améliorer la lisibilité du code source. Et vous pouvez profiter de paramètres facultatifs pour remplacer l'utilisation de méthodes surchargées lorsque la définition de méthode est identique.

Comment faire plus en C #:

  • Comment utiliser des interfaces fluides et le chaînage de méthodes en C #
  • Comment tester des méthodes statiques en C #
  • Comment refactoriser des objets Dieu en C #
  • Comment utiliser ValueTask en C #
  • Comment utiliser l'immuabilité en C
  • Comment utiliser const, readonly et static en C #
  • Comment utiliser les annotations de données en C #
  • Comment travailler avec les GUID en C # 8
  • Quand utiliser une classe abstraite ou une interface en C #
  • Comment travailler avec AutoMapper en C #
  • Comment utiliser les expressions lambda en C #
  • Comment travailler avec les délégués Action, Func et Predicate en C #
  • Comment travailler avec des délégués en C #
  • Comment implémenter un simple logger en C #
  • Comment travailler avec des attributs en C #
  • Comment travailler avec log4net en C #
  • Comment implémenter le modèle de conception de référentiel en C #
  • Comment travailler avec la réflexion en C #
  • Comment travailler avec Filesystemwatcher en C #
  • Comment effectuer une initialisation différée en C #
  • Comment travailler avec MSMQ en C #
  • Comment travailler avec des méthodes d'extension en C #
  • Comment utiliser les expressions lambda en C #
  • Quand utiliser le mot clé volatile en C #
  • Comment utiliser le mot clé yield en C #
  • Comment implémenter le polymorphisme en C #
  • Comment créer votre propre planificateur de tâches en C #
  • Comment travailler avec RabbitMQ en C #
  • Comment travailler avec un tuple en C #
  • Explorer les méthodes virtuelles et abstraites en C #
  • Comment utiliser l'ORM Dapper en C #
  • Comment utiliser le modèle de conception de poids mouche en C #