Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Charles GrahamОтветов: 7

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

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

visual-studio-2010

Ответы

Ответ 1 · рейтинг 26 · Bernard Vander Beken

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

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

Ответ 2 · рейтинг 13 · demius

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

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

Ответ 3 · рейтинг 5 · Lee Richardson

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

Ответ 4 · рейтинг 3 · Frans Harinck

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

Ответ 5 · рейтинг 3 · gdbdable

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

Ответ 6 · рейтинг 2 · Timothy Carter

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

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

Ответ 7 · Joe Chung

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы