我试图根据之前选择的参数调用一个需要一些参数的方法。
这可能更好地用一个例子来解释:
public static void MyMethod (string p1, string p2, string p3 = "", string p4 = "")
{
}
如果给出p4
,我想要实现的是p3
。
如果我这样称呼它:
MyMethod("Hello", "World", "P3", // p4 now required as p3 given a value)
我希望这是有道理的。感谢。
答案 0 :(得分:10)
而不是参数的默认值(有自己的问题),我会使用重载:
public static void MyMethod (string p1, string p2)
{
MyMethod(p1, p2, "", "");
}
public static void MyMethod (string p1, string p2, string p3, string p4)
{
...
}
答案 1 :(得分:1)
你可以做@Aliostad所建议的,如果这是你唯一的要求,这是有道理的。如果没有,我认为你最好将方法分成几个方法,使用不同的名称,这样调用你的方法的人就不会太混淆。
答案 2 :(得分:1)
可能上面的解释足以解决您的问题。您可以在重载方法中编写的代码如下所述。
public static void MyMethod (string p1, string p2)
{
MyMthod(p1, p2, "", "");
}
public static void MyMethod (string p1, string p2, string p3, string p4)
{
if(p3 has a value but p4 is missing the value)
throw new Exception("p4 is required");
}