I've started reading Jon Skeet's early access version of his book, which contains sections on C# 4.0, and one thing struck me. Unfortunately I don't have Visual Studio 2010 available so I thought I'd just ask here instead and see if anyone knew the answer.
If I have the following code, a mixture of existing code, and new code:
public void SomeMethod(Int32 x, Int32 y) { ... }
public void SomeMethod(Int32 x, Int32 y, Int32 z = 0) { ... }
Will the compiler complain either at the definition site or the call site about possible ambiguity?
For instance, what will this piece of code actually do?
SomeClass sc = new SomeClass();
sc.SomeMethod(15, 23);
Will it compile? Will it call the one without the z parameter, or will it call the one with the z parameter?