У меня есть два перегруженных метода, один с необязательным параметром.
void foo(string a) { }
void foo(string a, int b = 0) { }
теперь я вызываю:
foo("abc");
Интересно, что первая перегрузка называется. почему не вторая перегрузка с дополнительным значением, установленным в ноль?
Честно говоря, я бы ожидал, что компилятор принесет ошибку, по крайней мере предупреждение, чтобы избежать непреднамеренного выполнения неправильного метода.
В чем причина такого поведения? Почему команда С# определила его таким образом?