我已经开始阅读 Jon Skeet 的书的早期访问版本,其中包含有关 C# 4.0 的部分,有一件事让我印象深刻。不幸的是,我没有可用的 Visual Studio 2010,所以我想我只是在这里问一下,看看是否有人知道答案。
如果我有以下代码,现有代码和新代码的混合:
public void SomeMethod(Int32 x, Int32 y) { ... }
public void SomeMethod(Int32 x, Int32 y, Int32 z = 0) { ... }
编译器会在定义站点或调用站点抱怨可能的歧义吗?
例如,这段代码实际上会做什么?
SomeClass sc = new SomeClass();
sc.SomeMethod(15, 23);
会编译吗?它会调用不带 z 参数的那个,还是调用带 z 参数的那个?