我有一个功能void Test(int id, params string[] strs)
。
我如何将字符串数组作为strs
参数传递?当我打电话时:
Test(1, "a, b, c");
它将“strs”作为单个字符串(不是数组)。
实际上,params
只是 C# 编译器处理的语法糖,所以
这个:
void Method(params string[] args) { /**/ }
Method("one", "two", "three");
变成这样:
void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
我对此进行了测试,并且可以正常工作:
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[]>);
编辑
params 关键字允许您指定一个方法参数,该参数采用可变数量的参数。您可以发送以逗号分隔的参数声明中指定类型的参数列表,或指定类型的参数数组。您也可以不发送任何参数。方法声明中 params 关键字后面不允许有附加参数,方法声明中只允许有一个 params 关键字。
因此,您也可以Test
像这样调用该方法 Test(1);
而不会出现编译器错误。
试试这个。
var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)