cap*_*aig 3 c# arrays parameters
如果我有一个功能
void Foo(params int[] bar){}
Run Code Online (Sandbox Code Playgroud)
以下运行正常:
int[] a1 = {1, 2, 3};
int[] a2 = {4, 5, 6};
Foo(1, 2, 3);
Foo(a1);
Run Code Online (Sandbox Code Playgroud)
但这些会导致编译错误:
Foo(a1, 1, 2, 3);
Foo(1, 2, a1);
Foo(1, a1, 2);
Foo(a1, a2, 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
因为只允许第一个参数为int [],其余的必须是int.
最后一个例子是我想做的,但语言不会让我没有先组合数组.我非常喜欢语法的简单性,我宁愿不再添加代码.有没有人有一个很好的方法来做到这一点?
Meh*_*ari 11
有点奇怪.Foo(a1, 2, 3)不应该工作.你应该传递一个数组或一堆整数.你不能混合它们AFAIK.你有另一个超载或什么?
这样做并没有真正的语法.我能想到的最简洁的是:
Foo(a1.Concat(a2).Concat(new[] {1,2,3}).ToArray());
Run Code Online (Sandbox Code Playgroud)