Следующий код компилируется в С# 4.0:
void Foo(params string[] parameters) { }
void Foo(string firstParameter, params string[] parameters) { }
Как компилятор знает, какую перегрузку вы вызываете? И если это невозможно, почему код все еще компилируется?