【问题标题】:Are optional arguments possible in C# functions? [duplicate]C# 函数中是否可以使用可选参数? [复制]
【发布时间】:2014-06-03 10:58:57
【问题描述】:

我需要一个有两个参数的函数。

public void funx(string a, string b)
{
 // operations using string a and b
}

是否可以仅使用第一个参数 'a' 调用方法 funx() 。如果在函数调用期间没有输入第二个参数“b”,它应该采用可以在 fun x 中设置的默认值(对于 b)。 如果我用两个参数 a 和 b 调用 funx() ,那么应该使用我在函数调用中提供的值,同时跳过默认值集(对于 'b')。

简单来说,'b' 是可选的。如果输入,则应使用其值。如果未输入,则应使用默认值

【问题讨论】:

    标签: c#


    【解决方案1】:

    当然,像这样:

    public void funx(string a, string b = "default value")
    { 
       // operations using string a and b
    }
    

    如果您为b 提供默认值,那么您将其设为可选,因此您可以通过提供一个参数来调用您的方法。如果您没有为b 提供值,那么将使用默认值,如果你提供一个值,那么默认值将被忽略。

    可选参数的默认值也必须是编译时常量,可选参数定义在参数列表的末尾。详情可参考documentation。

    【讨论】:

    • 谢谢伙计,这有帮助.. 如果我在函数调用中为 'b' 提供一个值,将被使用还是将使用默认值
    • @God_Father:默认值当然会被你传入的内容覆盖。
    【解决方案2】:

    是的,有可能

    public void funx(string a, string b = "")
    {
    
    }
    

    但我更喜欢像这样重载函数:

    public void funx(string a)
    {
       this.funcx(a, "default");
    }
    
    public void funx(string a, string b)
    {
     // operations using string a and b
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 2013-10-08
      • 2010-12-14
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多