默认属性值
问题描述:
我有一个方法:默认属性值
public void MyMethod(string myParam1,string myParam2="")
{
myParam2 = (myParam2 == "")?myParam1:myParam2;
}
有没有办法做到这一点是这样的:
public void MyMethod(string myParam1,string myParam2 = (myParam2 == "")?myParam1:myParam2)
答
号
的默认值编译时需要知道参数。您提供的第一个片段是正确的方法。或者正如其他答案指出的那样,提供只接受单个参数的重载方法。
答
为了执行你想要的,你需要使用重载而不是可选参数。
答
不是直接的,作为缺省值必须在是已知的编译时间。你描述的第一种方法是正确的方法。
但是,你可以做到:
-
设置的空默认,当你使用它凝聚它:
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); }