方法可选属性的默认值

时间:2013-02-28 15:14:36

标签: c#

我有一个方法:

public void MyMethod(string myParam1,string myParam2="")
{
     myParam2 = (myParam2 == "")?myParam1:myParam2;
}

有没有办法做这样的事情:

public void MyMethod(string myParam1,string myParam2 = (myParam2 == "")?myParam1:myParam2)

4 个答案:

答案 0 :(得分:6)

参数的默认值需要在编译时知道。您提供的第一个代码段是正确的方法。或者正如其他答案所指出的那样,提供一种只接受单个参数的重载方法。

答案 1 :(得分:3)

为了执行您想要的操作,您需要使用重载而不是可选参数。

答案 2 :(得分:2)

我无法相信你的努力。

如果您想执行此类处理,最佳选项类似于 method overloading

  

重载分辨率是编译时机制,用于选择最佳   函数成员调用给定的参数列表和一组   候选职能成员。

答案 3 :(得分:2)

不直接,因为必须在编译时知道默认值。您描述的第一种方法是正确的方法。

但是,你可以做:

  1. 设置默认值null并在使用时将其合并:

    public void MyMethod(string myParam1, string myParam2 = null)
    {
        Console.WriteLine(myParam2 ?? myParam1);
    }
    
  2. 使用重载:

    public void MyMethod(string myParam1, string myParam2)
    {
        Console.WriteLine(myParam2);
    }
    
    public void MyMethod(string myParam1)
    {
        MyMethod(myParam1, myParam1);
    }