Можете ли вы использовать дополнительные параметры при таргетинге кода .NET 3.5? - PullRequest
32 голосов
/ 31 июля 2009

Я хочу написать библиотеку, которая использует новую опцию необязательных параметров C # 4.0, но я хочу настроить ее на версию 3.5 фреймворка. Возможно ли это?

Являются ли необязательные параметры синтаксическим сахаром так же, как методы расширения?

Ответы [ 7 ]

25 голосов
/ 01 марта 2010

С VS2010 RC я смог создать приложение .NET 3.5, которое использует необязательные параметры в C #.

Так что да, это все о синтаксическом сахаре.

13 голосов
/ 04 июня 2010

VS 2010 поддерживает необязательные параметры в C # для решений .NET 3.5. Однако одно предостережение заключается в том, что компилятор командной строки будет сообщать об ошибках.

Итак, если у вас есть автоматизированные сборки при запуске, - с использованием NANT или чего-то еще с использованием компилятора командной строки - ваши сборки не удастся.

5 голосов
/ 12 июля 2010

Как и у Джона Скита, я получал, что «функция« необязательный параметр »не может быть использована, поскольку она не является частью спецификации языка C # 3.0». Однако в RTM-версии Visual Studio вы можете выбрать «Версия по умолчанию» в «Свойства проекта» -> «Сборка» -> «Дополнительно». Это заставило меня работать.

3 голосов
/ 30 ноября 2011

Перейти к свойствам проекта -> вкладка «Сборка» -> нажать кнопку «Дополнительно» -> установить для языковой версии значение «по умолчанию» -> сохранить -> «быть счастливым»

3 голосов
/ 21 апреля 2011

Вы можете использовать необязательные и именованные параметры в целевой среде предыдущей версии, если сборки собираются в среде разработки для v4 (например, VS2010). Но вы должны знать о компиляции или публикации веб-сайтов во время выполнения, в этом случае будет использоваться компилятор целевой платформы. А поскольку компиляторы более старых платформ не понимают синтаксис необязательных и именованных параметров, это приведет к ошибкам компилятора.

2 голосов
/ 31 июля 2009

У меня нет установленного VS2010 для проверки, но я считаю, что это будет чисто языковая функция и поэтому должна использоваться независимо от целевой платформы.

Редактировать: Глядя на эту ссылку (и некоторые другие), можно увидеть, что необязательные параметры компилируются в аргументы метода с атрибутом [opt] в il. Я не знаю, существовал ли этот параметр в предыдущих версиях clr, но все же я думаю, что он есть.

0 голосов
/ 31 июля 2009

VB.NET имеет дополнительные параметры, если вы хотите использовать дополнительные параметры в .NET 3.5.

...