Ответ 1
Пропустите функции, новые в С# 7.0:
-
Кортежи: Пакет
System.ValueTuple
имеет версию для профиляportable-net40+sl4+win8+wp8
. Это означает, что он может использоваться на .Net 4.0. (Не знаю, почему только список зависимостей .Net 4.5.)Если вы хотите использовать кортежи в более низких версиях .Net, он все равно должен работать, пока вы добавляете код для
ValueTuple
и связанных с ними в ваш проект. -
out
переменные, сопоставление шаблонов, локальные функции, более выраженные члены, выраженияthrow
, улучшения синтаксиса числовых литералов: все эти функции - это просто синтаксический сахар, поэтому им не нужны новые возможности из рамки. -
ref
locals и возвращает: эта функция предоставляет на С# то, что поддерживает фреймворк с самого начала, поэтому здесь не требуется никаких изменений в структуре. -
Обобщенные типы возврата async: для использования этой функции вам нужен тип с атрибутом
AsyncMethodBuilder
, который находится вSystem.Threading.Tasks.Extensions
пакет (наряду с одним таким типом,ValueTask<T>
). Этот пакет поддерживается только на .Net 4.5, поэтому для .Net 4.0 вам нужно будет самостоятельно компилировать соответствующие типы. (Использованиеawait
в .Net 4.0 также требуетMicrosoft.Bcl.Async
, но ничего нового.)
Подводя итог: все С# 7.0 должны работать с .Net 4.5 после установки необходимых пакетов, и большая часть из них должна работать и с .Net 4.0.