55 votes

Créer des méthodes avec des paramètres infinis ?

En C#, vous pouvez le faire :

foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...);

Cette méthode Format() accepte une infinité de paramètres, le premier étant la façon dont la chaîne doit être formatée et les autres étant les valeurs à mettre dans la chaîne.

Aujourd'hui, je me suis retrouvé dans une situation où je devais obtenir un ensemble de chaînes de caractères et les tester, puis je me suis souvenu de cette fonctionnalité du langage, mais je n'en avais aucune idée. Après quelques recherches infructueuses sur le web, j'ai réalisé qu'il serait plus prudent d'obtenir un tableau, ce qui ne m'a pas donné entière satisfaction.

Q : Comment faire une fonction qui accepte des paramètres infinis ? Et comment l'utiliser ?

97voto

Klaus Byskov Pedersen Points 43779

Avec le params mot-clé.

Voici un exemple :

    public int SumThemAll(params int[] numbers)
    {
        return numbers.Sum();
    }

    public void SumThemAllAndPrintInString(string s, params int[] numbers)
    {
        Console.WriteLine(string.Format(s, SumThemAll(numbers)));
    }

    public void MyFunction()
    {
        int result = SumThemAll(2, 3, 4, 42);
        SumThemAllAndPrintInString("The result is: {0}", 1, 2, 3);
    }

Le code montre différentes choses. Tout d'abord, l'argument avec le params doit toujours être le dernier (et il ne peut y avoir qu'un seul mot-clé par fonction). En outre, vous pouvez appeler une fonction qui prend un mot-clé params argument de deux façons. La première façon est illustrée dans la première ligne de MyFunction où chaque nombre est ajouté comme un seul argument. Cependant, il peut également être appelé avec un tableau, comme l'illustre l'exemple suivant SumThemAllAndPrintInString qui appelle SumThemAll avec le int[] appelé numbers .

20voto

David Morton Points 10519

Utilisez le mot-clé params. Utilisation :

public void DoSomething(int someValue, params string[] values)
{
    foreach (string value in values)
        Console.WriteLine(value);
}

Le paramètre qui utilise le mot-clé params vient toujours à la fin.

6voto

bakasan Points 1149

Quelques notes.

Params doit être marqué sur un type de tableau, comme string[] ou object[].

Le paramètre marqué w/ params doit être le dernier argument de votre méthode. Foo(string input1, object[] items) par exemple.

3voto

Russ Cam Points 58168

Utiliser le params mot-clé. Par exemple

static void Main(params string[] args)
{
    foreach (string arg in args)
    {
        Console.WriteLine(arg);
    }
}

3voto

Faizan S. Points 5436

Vous pouvez y parvenir en utilisant l'option paramètres mot-clé.

Petit exemple :

public void AddItems(params string[] items)
{
     foreach (string item in items)
     { 
         // Do Your Magic
     }
}

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