Будет ли код использоваться другими языками? Если это так, то это меняет баланс в сторону перегрузок, в то же время помня ответ Хэмиша. В частности, C # не поддерживает необязательные параметры - пока ...
По общему признанию, это на самом деле не помешает кому-то использовать ваш код из C #, это может быть просто больно для них.
Если параметров много, и они логически представляют что-то, вы можете рассмотреть возможность их инкапсуляции, точно так же, как Process
работает с ProcessStartInfo
. Это особенно хорошо в C # из-за инициализаторов объектов.
Если это для строительства, вы можете также рассмотреть шаблон строителя как вариант этого. Например, в буферах протокола я могу сделать что-то вроде:
Person jon = new Person.Builder { Name="Jon", Age=32,
Spouse="Holly", Kids=3 }.Build();
, который в итоге становится очень читабельным, в то же время создавая человека за один раз (в одном выражении, без необходимости мутировать самого человека - действительно, тип сообщения является неизменным; это только строитель, который не является).