【问题标题】:Call overload method with default parameters使用默认参数调用重载方法
【发布时间】:2013-02-20 12:27:39
【问题描述】:

假设我们有两个方法

public void foo(int a, int b, bool c = false)
{
    //some code
}

public void foo(int a, int b, bool d, bool c = false)
{
    //some other code
}

当我调用foo(1,2,true) 时,它指的是第一种方法。有什么方法可以通过只传递3个参数来调用第二种方法吗?

我在生产代码中发现了类似的东西:/

【问题讨论】:

    标签: c# call parameter-passing


    【解决方案1】:
    foo(1,2,d:true); //will call the second method.
    

    【讨论】:

      【解决方案2】:

      命名参数只是一个参数,具有默认值。

      您的 中,您只需 overload 提供代码。注意参数(未命名)的数量是不同的。

      其他问题可能是:

      我可以这样做吗?

      public void foo(int a, int b, bool c)
      {
          //some code
      }
      
      public void foo(int a, int b, bool c = false)
      {
          //some other code
      }
      

      回答:不,你不能。因为,正如我所说,命名参数只是一个具有默认值的普通参数,所以这不会编译,因为已经有一个方法与 完全相同 相同的签名。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多