将string []数组赋值给params string []的函数

Yue*_* Li 18 c# string params

我有一个功能void Test(int id, params string[] strs).

我如何传递一个字符串数组作为strs参数?我打电话的时候:

Test(1, "a, b, c");
Run Code Online (Sandbox Code Playgroud)

它将"strs"作为单个字符串(不是数组).

ill*_*ant 32

实际上,params它只是一个由C#编译器处理的语法糖,所以

这个:

void Method(params string[] args) { /**/ }
Method("one", "two", "three");
Run Code Online (Sandbox Code Playgroud)

成为这个:

void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
Run Code Online (Sandbox Code Playgroud)


jor*_*123 10

我测试了它,它的工作原理:

    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
    }
Run Code Online (Sandbox Code Playgroud)

你可以像这样打电话 Test(1, <Some string[]>);

编辑

来自MSDN网站上的参数:

params关键字允许您指定采用可变数量参数的方法参数.您可以发送以逗号分隔的参数声明中指定类型的参数列表,或者指定类型的参数数组.你也可以不发送任何参数.在方法声明中的params关键字之后不允许使用其他参数,并且在方法声明中只允许使用一个params关键字.

所以你也可以在没有编译器错误的情况下调用这样的Test方法 Test(1);.