C# 基于其他参数的所需参数

C# 基于其他参数的所需参数,c#,parameters,C#,Parameters,我试图调用一个方法,该方法需要基于先前选择的参数的一些参数 用一个例子也许可以更好地解释这一点: public static void MyMethod (string p1, string p2, string p3 = "", string p4 = "") { } 我想要实现的是,如果给定了p3,则需要p4 如果我这样称呼它: MyMethod("Hello", "World", "P3", // p4 now required as p3 given a value) 我希望这是有道

我试图调用一个方法,该方法需要基于先前选择的参数的一些参数

用一个例子也许可以更好地解释这一点:

public static void MyMethod (string p1, string p2, string p3 = "", string p4 = "")
{
}
我想要实现的是,如果给定了
p3
,则需要
p4

如果我这样称呼它:

MyMethod("Hello", "World", "P3", // p4 now required as p3 given a value)

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

我将使用重载,而不是参数的默认值(它有自己的问题):

public static void MyMethod (string p1, string p2)
{
   MyMethod(p1, p2, "", "");
}

public static void MyMethod (string p1, string p2, string p3, string p4)
{
   ...
}

我将使用重载,而不是参数的默认值(这有其自身的问题):

public static void MyMethod (string p1, string p2)
{
   MyMethod(p1, p2, "", "");
}

public static void MyMethod (string p1, string p2, string p3, string p4)
{
   ...
}

您可以按照@Aliostad的建议去做,如果这是您唯一的要求,那么这是有意义的。如果没有,我认为您最好将该方法分成几个名称不同的方法,这样调用您的方法的人就不会太困惑。

您可以按照@Aliostad的建议去做,如果这是您唯一的要求,这是有意义的。如果没有,我认为您最好将该方法分成几个名称不同的方法,这样调用您的方法的人就不会太困惑。

以上解释可能足以解决您的问题。下面提到了可以在重载方法中编写的代码

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

}

也许上述解释足以解决您的问题。下面提到了可以在重载方法中编写的代码

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

}

谢谢,这帮我做了我需要的事+谢谢,这帮我做了我需要的事+1用c写这篇文章对你来说很难吗?“p3有一个值,但p4缺少该值”很抱歉,我认为它很简单,但忽略了相同的值。你用c#写这篇文章这么难吗?“p3有一个值,但p4缺少该值”很抱歉,我认为它很简单,但忽略了相同的值。