如果我有一个功能
void Foo(params int[] bar){}
以下运行良好:
int[] a1 = {1, 2, 3};
int[] a2 = {4, 5, 6};
Foo(1, 2, 3);
Foo(a1);
但是这些会产生编译错误:
Foo(a1, 1, 2, 3);
Foo(1, 2, a1);
Foo(1, a1, 2);
Foo(a1, a2, 1, 2, 3);
因为只允许第一个参数是 int[],其余的必须是 int。
最后一个例子是我想要做的,但语言不会让我先组合数组。我真的很喜欢语法的简单性,我宁愿不添加更多的代码。有没有人有一个很好的方法来做到这一点?
最佳答案
有点奇怪。 Foo(a1, 2, 3)
不应该工作。您应该传递一个数组或一堆整数。你不能把它们混在一起AFAIK。你有另一个重载或什么?
这样做并没有真正简洁的语法。我能想到的最简洁的一种是:
Foo(a1.Concat(a2).Concat(new[] {1,2,3}).ToArray());
关于c# - 将数组传递给可变长度的参数列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2201556/