C# 方法可选属性的默认值
我有一个方法:C# 方法可选属性的默认值,c#,C#,我有一个方法: 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="")
{
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);
}