Можете ли вы использовать дополнительные параметры при таргетинге кода .NET 3.5?

StackOverflow https://stackoverflow.com/questions/1210679

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top