87 votes

Passer plusieurs paramètres facultatifs à une fonction C #

Existe-t-il un moyen de configurer une fonction C # pour accepter un certain nombre de paramètres? Par exemple, pourriez-vous configurer une fonction telle que les éléments suivants fonctionnent tous -

 x = AddUp(2, 3)

x = AddUp(5, 7, 8, 2)

x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
 

185voto

Jon Skeet Points 692016

Utiliser un tableau de paramètres avec l' params modificateur:

public static void AddUp(params int[] values)
{
    int sum = 0;
    foreach (int value in values)
    {
        sum += value;
    }
    return sum;
}

Si vous voulez vous assurer qu'il y a au moins une valeur (plutôt que, éventuellement, un tableau vide) alors préciser que séparément:

public static void AddUp(int firstValue, params int[] values)

(Set sum de firstValue pour commencer dans la mise en œuvre.)

Notez que vous devez également vérifier le tableau de référence pour la nullité de la façon normale. Dans la méthode, le paramètre est parfaitement tableau ordinaire. Le paramètre modificateur array seulement fait une différence lorsque vous appelez la méthode. Fondamentalement, le compilateur transforme:

int x = AddUp(4, 5, 6);

en quelque chose comme:

int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);

Vous pouvez appeler avec un parfaitement tableau normal mais - la dernière syntaxe est valide dans le code source ainsi.

7voto

Tarydon Points 3358

C # 4.0 prend également en charge les paramètres facultatifs, qui pourraient être utiles dans certaines autres situations. Consultez cet article.

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