C# Version History

Version .NET Framework Visual Studio Important Features
C# 1.0 .NET Framework 1.0/1.1 Visual Studio .NET 2002 Basic features
C# 2.0 .NET Framework 2.0 Visual Studio 2005 Generics
Partial types
Anonymous   methods
Iterators
Nullable   types
Private   setters (properties)
Method   group conversions (delegates)
Covariance   and Contra-variance
Static   classes
C# 3.0 .NET Framework 3.0\3.5 Visual Studio 2008 Implicitly typed local variables
Object   and collection initializers
Auto-Implemented   properties
Anonymous   types
Extension   methods
Query   expressions
Lambda   expressions
Expression   trees
Partial Methods
C# 4.0 .NET Framework 4.0 Visual Studio 2010 Dynamic binding (late binding)
Named   and optional arguments
Generic   co- and contravariance
Embedded   interop types
C#   5.0 .NET   Framework 4.5 Visual   Studio 2012/2013 Async   features
Caller   information
C#   6.0 .NET   Framework 4.6 Visual   Studio 2013/2015 Expression   Bodied Methods
Auto-property   initializer
nameof   Expression
Primary   constructor
Await   in catch block
Exception   Filter
String   Interpolation
C# 7.0 .NET Core 2.0 Visual Studio 2017 out variables
Tuples
Discards
Pattern   Matching
Local   functions
Generalized   async return types
Expanded expression body members
C#   8.0 .NET   Core 3.0 Visual   Studio 2019 Readonly   members
Default   interface methods
Using   declarations
Static   local functions
Disposable   ref structs
Nullable   reference types
Exception   Filter
String   Interpolation
C# 9.0 .NET 5.0 Visual Studio 2019 Records
Init-only   properties
Top-level   statements
Init   accessors and readonly fields
With-expressions
Value-based   equality
Inheritance changes
C#   10.0 .NET   6.0 Visual   Studio 2022 Record   structs
Global   using directives
File-scoped   namespace declaration
Extended   Proptery Patterns
Null   Parameter Checking
Constant   interpolated strings