如果我有一个函数传递数组变量长度参数列表
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 [],其余的必须是整数。
最后一个例子是我想要做的,但语言不会让我没有先组合数组。我非常喜欢这种语法的简单性,而且我宁愿不添加更多的代码。有没有人有一个很好的方式来做到这一点?
是什么让你觉得'美孚(A1,1,2,3);''那里是a1'一个'INT []'应该工作?你测试过了吗?在哪个版本的编译器上? – 2010-02-04 17:06:36
你确定'Foo(a1,1,2,3)'有效,它调用与'Foo(1,2,3)'相同的过载?我在.net 3.5 SP1上进行了测试,但对我无效。 – 2010-02-04 17:09:52
够公平的。视觉工作室让我没有警告地打字,但没有其他人。它们都无法编译。我会编辑。 – captncraig 2010-02-04 17:13:26