web-dev-qa-db-fra.com

Affectation d'un tableau de chaînes [] à une fonction avec des paramètres chaîne []

J'ai une fonction void Test(int id, params string[] strs).

Comment passer un tableau de chaînes comme argument strs? Quand j'appelle:

Test(1, "a, b, c");

Il prend "strs" comme une seule chaîne (pas un tableau).

17
Yuen Li

En fait, le params est juste un sucre syntaxique géré par le compilateur C #, de sorte que

cette:

void Method(params string[] args) { /**/ }
Method("one", "two", "three");

devient ceci:

void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
32

J'ai testé cela et cela fonctionne:

    private void CallTestMethod()
    {
        string [] strings = new string [] {"1", "2", "3"};
        Test(1, strings);

    }

    private void Test(int id, params string[] test)
    {
        //Do some action with input
    }

Vous pouvez l'appeler comme ceci Test(1, <Some string[]>);

Modifier

De site Web MSDN sur les paramètres :

Le mot-clé params vous permet de spécifier un paramètre de méthode qui prend un 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 de paramètre, ou un tableau d'arguments du type spécifié. Vous ne pouvez également envoyer aucun argument. Aucun paramètre supplémentaire n'est autorisé après le mot clé params dans une déclaration de méthode, et un seul mot clé params est autorisé dans une déclaration de méthode.

Vous pouvez donc également appeler la méthode Test comme celle-ci Test(1); sans erreurs de compilation.

9
jordanhill123

Essayez ça.

var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)
1
fhnaseer