我有一个方法:
public void MyMethod(string myParam1,string myParam2="")
{
myParam2 = (myParam2 == "")?myParam1:myParam2;
}
有没有办法做这样的事情:
public void MyMethod(string myParam1,string myParam2 = (myParam2 == "")?myParam1:myParam2)
答案 0 :(得分:6)
否强>
参数的默认值需要在编译时知道。您提供的第一个代码段是正确的方法。或者正如其他答案所指出的那样,提供一种只接受单个参数的重载方法。
答案 1 :(得分:3)
为了执行您想要的操作,您需要使用重载而不是可选参数。
答案 2 :(得分:2)
答案 3 :(得分:2)
不直接,因为必须在编译时知道默认值。您描述的第一种方法是正确的方法。
但是,你可以做:
设置默认值null并在使用时将其合并:
public void MyMethod(string myParam1, string myParam2 = null)
{
Console.WriteLine(myParam2 ?? myParam1);
}
使用重载:
public void MyMethod(string myParam1, string myParam2)
{
Console.WriteLine(myParam2);
}
public void MyMethod(string myParam1)
{
MyMethod(myParam1, myParam1);
}