Похоже, в некоторых ответах есть некоторая дезинформация:
- Дополнительные параметры были введены в C # 4, поэтому вы должны использовать компилятор C # 4
- Необязательные параметры всегда были в framework , поэтому вы можете указать любую версию фреймворка и по-прежнему использовать их, если вы используете компилятор C # 4. Вполне разумно ориентироваться на .NET 2 с помощью компилятора C # 4, и тогда кто-то, ссылающийся на вашу библиотеку, скажем, из VB8, все равно сможет использовать ваши необязательные параметры.
Как уже говорили другие, перегрузки являются альтернативой использованию необязательных параметров, если вы не используете C # 4 или если вы хотите, чтобы ваш код потреблялся из-за более раннего кода C #. (Если вы создаете библиотеку с использованием C # 4, но затем в нее должен вызываться некоторый код C # 3, эти необязательные параметры фактически потребуются для этого кода.)
(Кроме того, я бы серьезно пересмотрел ваши имена ... Я знаю, что это только пример кода, но вообще говоря, префиксы, такие как "p" для параметров, не рекомендуются, как правило, и методы, как правило, являются Pascal- обсаженные.)