可选参数与空参数方法和带重载的构造函数

Ale*_*ace 3 c# methods overloading

简单地说,你说有两种方法:

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



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

为什么如果在没有任何参数的情况下调用WriteMessage函数,它会运行"空参数函数"?我理解方法重载,但为什么不运行可选参数函数,好像空参数函数不存在,它会运行?

Alb*_*res 7

关于以下点重载决议,从MSDN解释说,决定:

如果判断两个候选者同样好,则优先选择没有可选参数的候选者,该参数在调用中被省略.这是对具有较少参数的候选者的重载分辨率的一般偏好的结果.