c# - 为什么要使用 params 关键字?

标签 c# parameter-passing params variadic-functions variadic

我知道这是一个基本问题,但我找不到答案。

为什么要使用它?如果你编写了一个函数或一个使用它的方法,当你删除它时,代码仍然可以完美地工作,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 你可以这样调用你的方法:

addTwoEach(1, 2, 3, 4, 5);

params ,你不能。

此外,在两种情况下,您都可以使用数组作为参数调用该方法:
addTwoEach(new int[] { 1, 2, 3, 4, 5 });

即,params允许您在调用方法时使用快捷方式。

无关,您可以大大缩短您的方法:
public static int addTwoEach(params int[] args)
{
    return args.Sum() + 2 * args.Length;
}

关于c# - 为什么要使用 params 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061362/

相关文章:

c# - LINQ 的 WHERE 子句,其中 COLUMN 可能为空

c# - Angular 6 .Net core 2.2 App 中的 Cors 错误

sql - adDBTimeStamp - 访问 VBA 到 SQL Server 存储过程

string - 在 Perl 中将所有参数作为字符串传递给子例程

ruby-on-rails-3 - 如何在 Ruby on Rails 中将 URL 参数传递给根 [在 routes.rb 中]

hyperlink - iTunes链接中的 “uo=4”参数指定了什么?

model-view-controller - Grails中对参数的更改仅在 Controller 中可见,而在 View 中不可见

c# - IAsyncEnumerable<T> 与 IEnumerable<Task<T>> 之间有什么区别?

c# - Distinct 子句导致类型错误

java - Google Guava - 除了 go KEY 外,还将参数传递给加载方法