加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将数组传递给可变长度参数列表

发布时间:2020-12-16 00:12:47 所属栏目:百科 来源:网络整理
导读:如果我有一个功能 void Foo(params int[] bar){} 以下运行正常: int[] a1 = {1,2,3};int[] a2 = {4,5,6};Foo(1,3);Foo(a1); 但这些会导致编译错误: Foo(a1,1,3);Foo(1,a1);Foo(1,a1,2);Foo(a1,a2,3); 因为只允许第一个参数为int [],其余的必须是int. 最后
如果我有一个功能

void Foo(params int[] bar){}

以下运行正常:

int[] a1 = {1,2,3};
int[] a2 = {4,5,6};
Foo(1,3);
Foo(a1);

但这些会导致编译错误:

Foo(a1,1,3);
Foo(1,a1);
Foo(1,a1,2);
Foo(a1,a2,3);

因为只允许第一个参数为int [],其余的必须是int.

最后一个例子是我想做的,但语言不会让我没有先组合数组.我非常喜欢语法的简单性,我宁愿不再添加代码.有没有人有一个很好的方法来做到这一点?

解决方法

有点奇怪. Foo(a1,3)不应该起作用.你应该传递一个数组或一堆整数.你不能混合它们AFAIK.你有另一个超载或什么?

这样做并没有真正的语法.我能想到的最简洁的是:

Foo(a1.Concat(a2).Concat(new[] {1,3}).ToArray());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读