Why is this allowed?
private void foo(int x, int y, int z = 0) { MessageBox.Show("A"); }
private void foo(int x, int y) { MessageBox.Show("B"); }
...and what is the reasoning behind the designers of C# deciding upon "B", should you attempt to foo(0,0);
?