Можете ли вы использовать дополнительные параметры при таргетинге кода .NET 3.5?
-
06-07-2019 - |
Вопрос
Я хочу написать библиотеку, которая использует новую опцию необязательных параметров C # 4.0, но я хочу настроить ее на версию 3.5 фреймворка. Это возможно?
Являются ли необязательные параметры синтаксическим сахаром так же, как методы расширения?
Решение
С VS2010 RC я смог создать приложение .NET 3.5, которое использует необязательные параметры в C #.
Так что да, это все о синтаксическом сахаре.
Другие советы
VS 2010 поддерживает необязательные параметры в C # для решений .NET 3.5. Однако одно предостережение заключается в том, что компилятор командной строки будет сообщать об ошибках. Р>
Таким образом, если вы запустили автоматическую сборку, - используя NANT или что-то еще, используя компилятор командной строки - ваши сборки потерпят неудачу.
Как и у Джона Скита, я не мог использовать «опцию« необязательный параметр », поскольку она не является частью спецификации языка C # 3.0». Однако в RTM-версии Visual Studio вы можете выбрать «Языковая версия» на «default» в свойствах проекта -> Build -> Advanced. Это заставило меня работать.
Вы можете использовать необязательные и именованные параметры в целевой среде предыдущей версии, если сборки собираются в среде разработки для v4 (например, VS2010). Но вы должны знать о компиляции или публикации веб-сайтов во время выполнения, в этом случае будет использоваться компилятор целевой платформы. А поскольку компиляторы старых платформ не понимают синтаксис необязательных и именованных параметров, это приведет к ошибкам компилятора.
Перейти к свойствам проекта - > Вкладка "Сборка" - > нажмите кнопку «Дополнительно» - > установить для языковой версии значение по умолчанию - > сохранить - > будь счастлив;)
У меня нет установленного VS2010 для проверки, но я считаю, что это будет чисто языковая функция, и, следовательно, ее можно будет использовать независимо от целевой платформы.
Изменить. Просмотр этой ссылки (и некоторые другие), кажется, что дополнительные параметры компилируются в аргументы метода с атрибутом [opt] в il. Я не знаю, существовал ли этот параметр в предыдущих версиях clr, но все же я думаю, что он существует.
VB.NET имеет необязательные параметры, если вы хотите использовать необязательные параметры в .NET 3.5.