我知道这是一个很基本的问题,但我找不到答案。
为什么要用它?如果你编写的函数或方法正在使用它,当你删除它时,代码仍然可以完美地工作,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;
}
使用参数你可以像这样调用你的方法:
addTwoEach(1, 2, 3, 4, 5);
如果没有参数,就不能。
此外,在这两种情况下,你都可以用数组作为参数调用方法:
addTwoEach(new int[] { 1, 2, 3, 4, 5 });
也就是说,params允许您在调用方法时使用快捷方式。
与此无关,你可以大大缩短你的方法:
public static int addTwoEach(params int[] args)
{
return args.Sum() + 2 * args.Length;
}
它增强了代码的简洁性。既然可以简洁明了,为什么还要冗长呢?
using System;
namespace testingParams
{
class Program
{
private void lengthy(int[] myArr)
{
foreach (var item in myArr)
{
//...
}
}
private void concise(params int[] myArr) {
foreach (var item in myArr)
{
//...
}
}
static void Main(string[] args)
{
Program p = new Program();
//Why be lengthy...:
int[] myArr = new int[] { 1, 2, 3, 4, 5 };
p.lengthy(myArr);
//When you can be concise...:
p.concise(1, 2, 3, 4, 5);
}
}
}
如果删除关键字params,调用者代码将不能正常工作。
使用参数你可以像这样调用你的方法:
addTwoEach(1, 2, 3, 4, 5);
如果没有参数,就不能。
此外,在这两种情况下,你都可以用数组作为参数调用方法:
addTwoEach(new int[] { 1, 2, 3, 4, 5 });
也就是说,params允许您在调用方法时使用快捷方式。
与此无关,你可以大大缩短你的方法:
public static int addTwoEach(params int[] args)
{
return args.Sum() + 2 * args.Length;
}