50 votes

Comment ignorer les paramètres facultatifs en C#?

Exemple:

public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... }

Je voudrais l'appeler comme ça:

int returnVal = foo(5,,8); 

En d'autres termes, je veux fournir x et z, mais je veux utiliser la valeur par défaut pour Y, optionalY = 1.

Visual Studio n'aime pas le ,,

S'il vous plaît aidez-moi.

77voto

Josiah Ruddell Points 14171

Si c'est C# 4.0, vous pouvez utiliser la fonctionnalité d'arguments nommés :

foo(x: 5, optionalZ: 8); 

Voir ce blog pour plus d'informations.

19voto

marcog Points 39356

En C# 4.0, vous pouvez nommer les arguments qui surviennent après les valeurs par défaut ignorées comme ceci :

int returnVal = foo(5, optionalZ: 8);

Ceci est appelé arguments nommés. Plusieurs autres langues proposent cette fonctionnalité, et il est commun pour elles d'utiliser la syntaxe foo(5, optionalZ=8) à la place, ce qui est utile à savoir lors de la lecture de code dans d'autres langues.

0voto

tofo Points 348

Une autre façon dynamique de fournir des paramètres de votre choix est de mettre en œuvre votre(s) méthode(s) dans une classe et de fournir des paramètres nommés au constructeur de la classe. Pourquoi ne pas même ajouter des appels aux méthodes sur la même ligne de code comme mentionné ici: Comment définir des paramètres nommés en C#

var p = new PersonInfo { Name = "Peter", Age = 15 }.BuildPerson();

0voto

Peter Points 1706

C'est une réponse tardive, mais pour les personnes qui consultent ceci. On pourrait également utiliser des surcharges, qui utilisent le même nom que la méthode/fonction, mais avec un ensemble de paramètres différents.

ea

int SummAll (int a=0, int b=1, int c=2)
{return a+b+c;}

int SumAll (int a=0;int c=10) //en sautant B 
{return a+c; }

Ce schéma est similaire à la façon dont avec intellicense nous pouvons parcourir les variations des fonctions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X