【发布时间】:2013-02-13 10:17:23
【问题描述】:
我正在尝试混合可选参数和可变长度参数(使用 params 关键字):
这是函数声明:
void foo(int req, string opt = "empty", params object[] rest) {}
下面是对该函数的调用:
foo(1);
foo(1, "something");
foo(1, "something", 2, 3);
foo(1, 2, 3);
最后一次调用无法编译,因为在省略的可选参数之后提供了参数。 (至少我认为这就是它不起作用的原因)
我怎样才能省略可选参数(opt)而仍然能够使用可变长度参数(rest)?
编辑:事实上,对C# 4.0, optional parameters and params do not work together 的回答并不让我满意,因为在多个可选参数的情况下可能存在多种重载组合。
【问题讨论】:
-
IMO 将这两种技术结合起来只会比单独的重载
foo()方法更令人困惑。 -
@CAbbott 确实如此。我搜索的不够多。
-
您可以随意编辑它。没有办法干净地做到这一点。我给副本的答案,这个问题是寻求不同答案的副本,远非最佳语法,我没有声称它是。答案已发布为可能的解决方法。