Назначение массива string [] в функцию с строкой params []
У меня есть функция void Test(int id, params string[] strs)
.
Как передать массив строк в качестве аргумента strs
? Когда я звоню:
Test(1, "a, b, c");
Он принимает "strs" как одну строку (а не массив).
Ответы
Ответ 1
Собственно, params
- это просто синтаксический сахар, обработанный компилятором С#, так что
void Method(params string[] args) { /**/ }
Method("one", "two", "three");
становится следующим:
void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
Ответ 2
Я тестировал это, и он работает:
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
}
Вы можете назвать это так: Test(1, <Some string[]>);
Edit
От веб-сайт MSDN по параметрам:
Ключевое слово params позволяет указать параметр метода, который принимает переменное количество аргументов. Вы можете отправить список, разделенный запятыми. аргументы типа, указанного в объявлении параметра, или массив аргументов указанного типа. Вы также можете отправить аргументы. Никакие дополнительные параметры не разрешены после параметров ключевое слово в объявлении метода, и только одно ключевое слово params разрешено в объявлении метода.
Таким образом, вы можете также вызвать метод Test
, подобный этому Test(1);
без ошибок компилятора.
Ответ 3
Попробуйте это.
var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)