24

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

我如何将字符串数组作为strs参数传递?当我打电话时:

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

它将“strs”作为单个字符串(不是数组)。

4

3 回答 3

38

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

这个:

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

变成这样:

void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
于 2013-04-02T07:20:29.857 回答
14

我对此进行了测试,并且可以正常工作:

    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[]>);

编辑

来自MSDN 网站上的 params

params 关键字允许您指定一个方法参数,该参数采用可变数量的参数。您可以发送以逗号分隔的参数声明中指定类型的参数列表,或指定类型的参数数组。您也可以不发送任何参数。方法声明中 params 关键字后面不允许有附加参数,方法声明中只允许有一个 params 关键字。

因此,您也可以Test像这样调用该方法 Test(1);而不会出现编译器错误。

于 2013-04-02T07:09:06.263 回答
1

试试这个。

var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)
于 2013-04-02T07:28:13.707 回答