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).
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" })
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.
Essayez ça.
var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)