オーバーロードされたメソッドが 2 つあります。1 つはオプションのパラメーターです。
void foo(string a) { }
void foo(string a, int b = 0) { }
今私は電話します:
foo("abc");
興味深いことに、最初のオーバーロードが呼び出されます。オプションの値がゼロに設定された 2 番目のオーバーロードではないのはなぜですか?
正直なところ、コンパイラがエラー、少なくとも間違ったメソッドの意図しない実行を避けるための警告をもたらすことを期待していました。
この動作の理由は何ですか? C# チームがそのように定義したのはなぜですか?