我试图混合可选参数和可变长度参数关键字(使用PARAMS关键字):混合可选参数,而params在c#
这里的函数声明:
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)并仍然能够使用可变长度参数(休息)?
编辑:实际上,对C# 4.0, optional parameters and params do not work together的回答不满足我,因为在多个可选参数的情况下可能有多种重载组合。
组合这两种技术的IMO只是让它比单独的重载'foo()'方法更容易混淆。 – 2013-02-27 14:48:36
@CAbbott确实如此。我没有足够的搜索。 – seb 2013-02-27 15:04:01
您可以尽可能多地编辑它。没有办法做到这一点干净。我给复本的答案是,这个问题是一个重复的问题,正在寻求一个不同的答案,远不是最佳的语法,我也没有声称它是。答案是作为一个可能的工作。 – CodeMonkeyKing 2014-06-06 06:59:27