【问题标题】:Optional Parameter vs Empty Parameter Methods and Constructor with Overloading可选参数与空参数方法和具有重载的构造函数
【发布时间】:2017-12-17 00:25:57
【问题描述】:

简单来说,假设你有两种方法:

public static void WriteMessage() 
{
    Console.Write("Empty Parameter Function");
}



public static void WriteMessage(string data = "Some Data")
{
    Console.Write("Optional Parameter Function");
}

为什么不带任何参数调用WriteMessage函数,它运行的是“空参数函数”?我理解方法重载,但是为什么可选参数函数不运行,就好像空参数函数不存在一样,它会运行?

【问题讨论】:

    标签: c# methods overloading


    【解决方案1】:

    来自MSDN 的关于过载解决的以下观点解释了该决定:

    如果两个候选者被判断为同样好,则优先考虑没有可选参数的候选者,在调用中省略了这些参数。这是由于参数较少的候选者普遍偏好重载解决方案的结果。

    【讨论】:

    • 也因为这样,添加带有可选参数的方法重载不会改变现有代码的行为,这是相当意外的。
    猜你喜欢
    • 2012-03-14
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2021-09-14
    • 2019-02-26
    • 2013-05-23
    相关资源
    最近更新 更多