web-dev-qa-db-fra.com

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 des paramètres infinis, étant le premier comment la chaîne doit être formatée et les autres sont des valeurs à mettre dans la chaîne.

Aujourd'hui, je suis arrivé à une situation où je devais obtenir un ensemble de chaînes et les tester, puis je me suis souvenu de cette fonctionnalité de langage, mais je n'avais aucune idée. Après quelques recherches infructueuses sur le Web, j'ai réalisé qu'il serait plus prudent de simplement obtenir un tableau, ce qui ne m'a pas satisfait.

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

55
Marcelo

Avec le mot clé params .

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 mot clé params doit toujours être le dernier (et il ne peut y en avoir qu'un par fonction). De plus, vous pouvez appeler une fonction qui prend un argument params de deux manières. 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 illustré dans SumThemAllAndPrintInString qui appelle SumThemAll avec le int[] appelé numbers.

91

Utilisez le mot-clé params. Usage:

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.

19
David Morton

Quelques notes.

Les paramètres doivent être marqués sur un type de tableau, comme la chaîne [] ou l'objet [].

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

6
bakasan

utilisez le mot clé params . Par exemple

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

Vous pouvez y parvenir en utilisant le mot clé params .

Petit exemple:

public void AddItems(params string[] items)
{
     foreach (string item in items)
     { 
         // Do Your Magic
     }
}
3
Faizan S.
    public static void TestStrings(params string[] stringsList)
    {
        foreach (string s in stringsList){ } 
            // your logic here
    }
3
Asad Butt
 public string Format(params string[] value)
 {
            // implementation
 }

Le mot-clé params est utilisé

1
Dan
function void MyFunction(string format, params object[] parameters) {

}

Au lieu de l'objet [], vous pouvez utiliser n'importe quel type de votre choix. L'argument params doit toujours être le dernier de la ligne.

1
AxelEckenberger