【发布时间】:2018-01-20 00:18:13
【问题描述】:
如何在 [Optional] 中使用 params 关键字?
我想同时使用关键字 params 和 Optional 但它会引发错误
public void m( int x,[Optional] int c,params string [] arr)
{
Console.WriteLine("x= {0}", x);
foreach (string item in arr)
{
Console.WriteLine("name ={0}\n",item);
}
public static void Main(){
Program x = new Program();
x.m(10,"mido","sfs","sgsd"); // here error why?
}
【问题讨论】:
-
您遇到的错误是什么?
-
调用方法时,不能选择不为可选参数 (
c) 提供参数,但为后面的参数提供参数。 -
更好的解决方案是使用两种方法,一种带有可选参数(这样就不是可选的),另一种没有
-
另外一个可能的解决方案是将可选参数标记为 Nullable。然后您可以在代码中检查该值
-
基本上
params必须在最后,并且 optional 后面不能跟非可选的,否则可能会产生歧义。根据这些规则,您不能将它们一起使用。相反,只需创建多个重载。