我知道这是一个很基本的问题,但我找不到答案。
为什么要用它?如果你编写的函数或方法正在使用它,当你删除它时,代码仍然可以完美地工作,100%没有它。例句:
参数:
static public int addTwoEach(params int[] args)
{
int sum = 0;
foreach (var item in args)
sum += item + 2;
return sum;
}
无参数:
static public int addTwoEach(int[] args)
{
int sum = 0;
foreach (var item in args)
sum += item + 2;
return sum;
}
还有一件重要的事情需要强调。最好使用参数,因为它的性能更好。当你调用一个带有params参数的方法时,什么都没有传递给它:
public void ExampleMethod(params string[] args)
{
// do some stuff
}
电话:
ExampleMethod();
然后。net Framework的新版本(从。net Framework 4.6开始):
ExampleMethod(Array.Empty<string>());
这个数组。空对象以后可以被框架重用,所以不需要做多余的分配。这些分配将在你像这样调用这个方法时发生:
ExampleMethod(new string[] {});
不需要创建重载方法,只需使用一个带有参数的方法,如下所示
// Call params method with one to four integer constant parameters.
//
int sum0 = addTwoEach();
int sum1 = addTwoEach(1);
int sum2 = addTwoEach(1, 2);
int sum3 = addTwoEach(3, 3, 3);
int sum4 = addTwoEach(2, 2, 2, 2);
添加params关键字本身表明,你可以在调用该方法时传递多个参数,而不使用它是不可能的。更具体地说:
static public int addTwoEach(params int[] args)
{
int sum = 0;
foreach (var item in args)
{
sum += item + 2;
}
return sum;
}
当你要调用上述方法时,你可以通过以下任何一种方式调用它:
addTwoEach()
添加两个每个(1)
addTwoEach(new int[]{ 1, 2, 3, 4 })
但是当你删除params关键字时,上面给出的方法只有第三种方式可以工作。对于第一种和第二种情况,你会得到一个错误。