105 votes

Existe-t-il une alternative en C# aux paramètres vararg de Java ?

J'ai travaillé sur Java et je suis novice en matière de technologie .Net.

Est-il possible de déclarer une fonction en C# qui accepte des paramètres d'entrée variables ?

Existe-t-il une syntaxe C# similaire à la syntaxe Java suivante ?

void f1(String... a)

165voto

Jon Skeet Points 692016

Oui, le C# a un équivalent des paramètres varargs. Ils s'appellent tableaux de paramètres et introduit avec le params modificateur :

public void Foo(int x, params string[] values)

Alors appelez-le avec :

Foo(10, "hello", "there");

Comme avec Java, c'est seulement le dernier paramètre qui peut varier comme ceci. Notez que (comme avec Java) un paramètre de type params object[] objects peut facilement causer une confusion, car vous devez vous rappeler si un argument unique de type object[] est destiné à être remballé ou non. De même, pour tout type nullable, vous devez vous rappeler si un argument unique de type null sera traitée comme une référence de tableau ou un élément unique de tableau. (I pensez à le compilateur ne crée le tableau que s'il le doit, mais j'ai tendance à écrire du code qui m'évite d'avoir à m'en souvenir).

39voto

astander Points 83138

Jetez un coup d'œil à params (Référence C#)

Le mot-clé params vous permet de spécifier un paramètre de méthode qui prend une valeur de nombre variable d'arguments.

Vous pouvez envoyer une liste d'arguments séparés par des virgules du type spécifié dans la déclaration du paramètre, ou un tableau d'arguments du type spécifié. type spécifié. Vous pouvez également ne pas envoyer d'arguments.

Aucun paramètre supplémentaire n'est autorisé après le mot clé params dans une commande et un seul mot-clé params est autorisé dans une déclaration de méthode déclaration de méthode.

Comme le montre l'exemple, la méthode est déclarée en tant que

public static void UseParams(params int[] list)
{
    for (int i = 0; i < list.Length; i++)
    {
        Console.Write(list[i] + " ");
    }
    Console.WriteLine();
}

et utilisé comme

UseParams(1, 2, 3, 4);

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