Let’s go through the features new in C# 7.0:
-
Tuples: The
System.ValueTuplepackage has a version for theportable-net40+sl4+win8+wp8profile. That means it is usable on .Net 4.0. (Not sure why dependencies list only .Net 4.5.)If you wanted to use tuples on even lower versions of .Net, it should still work, as long as you add the code for
ValueTupleand related types to your project. -
outvariables, pattern matching, local functions, more expression-bodied members,throwexpressions, numeric literal syntax improvements: All these features are just syntax sugar, so they don’t need any new capabilities from the framework. -
reflocals and returns: This feature exposes in C# what the framework supported since the start, so no changes in the framework are needed here either. -
Generalized async return types: To use this feature, you need a type that has the
AsyncMethodBuilderattribute, which is in theSystem.Threading.Tasks.Extensionspackage (along with one such type,ValueTask<T>). This package is only supported on .Net 4.5, so for .Net 4.0, you would need to compile the relevant types yourself. (Usingawaiton .Net 4.0 also requiresMicrosoft.Bcl.Async, but that’s nothing new.)
To sum up: All of C# 7.0 should work on .Net 4.5 after installing the required packages and most of it should work on .Net 4.0 too.