为什么C#允许准冲突方法签名?

Jos*_*ech 5 c# overloading function

为什么允许这样做?

private void foo(int x, int y, int z = 0) { MessageBox.Show("A"); }
private void foo(int x, int y) { MessageBox.Show("B"); }
Run Code Online (Sandbox Code Playgroud)

......如果你想尝试C#决定"B"的设计者背后的原因是什么foo(0,0);