Назначение массива 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)