开发环境:Visual Studio 2013,构建的.NET Framework 4.5项目
class Foo
{
public Foo()
{
}
public Foo(string name = "NoName")
{
Name = name;
}
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
Console.WriteLine("# Name: {0}", foo.Name);
Console.ReadLine();
}
}
输出:
# Name:
看输出结果感觉调用的是Foo()构造函数。
请问为什么允许这样有二义性的调用存在?C#的默认构造函数和带默认实参的构造函数之间有什么不可说的秘密吗?