Рассмотрим такой метод
void RegisterUser(string firstname, string lastname, int age);
Мне нравится явно называть аргументы методов, подобных этому, когда я их вызываю, потому что для кого-то легко смешивать аргументы firstname
и lastname
. Однако это не обязательно для age
. Например, я думаю, что это должно быть ОК с ясной точки зрения.
RegisterUser(firstname: "John", lastname: "Smith", 25);
Но будет выведена следующая ошибка:
Именованные аргументы должны появляться после того, как были определены все фиксированные аргументы
Еще одна интересная вещь: если подпись была
void RegisterUser(int age, string firstname, string lastname);
затем вызывая его следующим образом, НЕ выдает ошибку
RegisterUser(25, firstname: "John", lastname: "Smith");
Почему С# создан так? Есть ли осложнение для компилятора, если разрешен первый сценарий?