方法重载与可选参数

sen*_*nfo 1 c# methods optional-parameters c#-4.0

我似乎记得读过C#4.0中方法重载(和构造函数链接)和可选参数之间存在重要区别,但我无法找到任何确认任何差异的内容.

以下两种实现之间是否存在重要差异?

第一

public void Foo()
{
   Foo(String.Empty);
}

public void Foo(string message)
{
   Console.WriteLine(message);
}
Run Code Online (Sandbox Code Playgroud)

第二

public void Foo(string message = "")
{
   Console.WriteLine(message);
}
Run Code Online (Sandbox Code Playgroud)

Ali*_*tad 8

我赞成方法重载.可选参数存在已知的版本控制问题.

Jon Skeet 在这里发表了一篇非常好的文章.

添加这个的动机是让它更容易与COM交谈,其中方法可以有许多参数,而不是新的C#类设计实践