c# - 将数组解包到方法参数中

标签 c# arrays syntax variadic-functions params-keyword

如您所知,C# 通过 params 关键字支持可变方法:

int Add(params int[] xs) {
    return xs.Sum();
}

然后可以使用您喜欢的任意数量的参数调用它:

Add(1);
Add(1, 2);
Add(1, 2, 3);

但是假设我想使用 ints1 数组调用 Add。这可能吗以及如何(最好没有反射(reflection))?我尝试了以下但它们给出了语法错误(语法纯粹是猜测):

var xs = new[] { 1, 2, 3 };
Add(xs...); // doesn't work; syntax error
Add(params xs); // doesn't work; syntax error

1 我的实际用例不同,但我认为这个示例不会那么复杂。

最佳答案

你的方法需要一个返回类型:

int Add(params int[] xs) {
    return xs.Sum();
}

要用数组调用它,您只需使用方法调用的普通语法:

int[] xs = new[] { 1, 2, 3 };
var result = Add(xs);

关于c# - 将数组解包到方法参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983592/

相关文章:

javascript - 某些元素未从数组中删除

command-line - 在 Perforce 中删除文件的命令行语法是什么?

Python:访问多个属性的简短语法

c# - Enterprise Library 5.0 和命令超时

c# - 反设计模式书

c# - OnValidateIdentity ASP.NET Identity 如何工作

arrays - 比较两个数组字典是否相等

java - 用二维数组java写入txt文件

objective-c - 有没有办法声明一个 objective-C block typedef,其参数包含该 typedef?

c# - 如何从后面的 c# asp.net 应用程序代码写入 chrome/ie/ff f12 控制台