static void F(string ham, object jam = null) { }
static void F(string spam, string ham, object jam = null) { }
...
F("meat product", null);
Разработчик этого странного кода, очевидно, пытается сделать необязательные параметры на обоих концах;предполагается, что и спам, и джем являются необязательными, но ветчина обязательна.
Какую перегрузку выбирает компилятор и почему?
( Я получил вопрос от блог Эрика Липперта )