基于其他参数的必需参数

时间:2012-03-27 10:57:05

标签: c# parameters

我试图根据之前选择的参数调用一个需要一些参数的方法。

这可能更好地用一个例子来解释:

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)

我希望这是有道理的。感谢。

3 个答案:

答案 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");

}