我有一个功能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);.