C# Version History
Version | Features | Visual Studio | Framework |
C# 7.2 | Reference semantics with value types Non-trailing named arguments Leading underscores in numeric literals private protected access modifier |
Visual Studio 2017 version 15.5 | .NET Core/ .NET Framework 4.7.1 |
C# 7.1 | async Main method default literal expressions Inferred tuple element names |
Visual Studio 2017 version 15.3 | .NET Framework 4.7 |
C# 7.0 | out variables Tuples Discards Pattern Matching ref locals and returns Local Functions More expression-bodied members throw Expressions Generalized async return types Numeric literal syntax improvements |
Visual Studio 2017 | .NET Framework 4.7 |
C# 6.0 | Read-only Auto-properties Auto-Property Initializers Expression-bodied function members using static Null – conditional operators String Interpolation Exception filters nameof Expressions await in catch and finally blocks index initializers Extension methods for collection initializers Improved overload resolution |
Visual Studio 2015 | .NET Framework 4.6 |
C# 5.0 | Async / await, and caller information attributes. | Visual Studio 2012 | .NET Framework 4.5 |
C# 4.0 | Dynamic binding Optional parameters and named arguments Type variance with generic interfaces and delegates Generic co- and contravariance Embedded interop types |
Visual Studio 2010 | .NET Framework 4.0 |
C# 3.0 | LINQ Implicitly typed local variables Object and collection initializers Auto-Implemented properties Anonymous types Extension methods Query expressions Lambda expressions Expression trees Partial Methods |
Visual Studio 2008 | .NET Framework 3.0\3.5 |
C# 2.0 | Generics Partial types Anonymous methods Iterators Nullable types Private setters (properties) Method group conversions (delegates) Covariance and Contra-variance Static classes |
Visual Studio 2005 | .NET Framework 2.0 |
C# 1.1 | #line pragma and xml doc comments. | Visual Studio 2003 | .NET Framework 1.0/1.1 |
C# 1.0 | First initial release | Visual Studio 2002 | .NET Framework 1.0/1.1 |