C# Version History

Anders Hejlsberg was the man behind the development of C# language. He was the leader of the team who developed the C# language.

At present (as of March. 2021), latest version of C# is 9.0, this version was released in 2020 in .NET 5.0 along with Visual Studio 2019 version 16.8.

C# appeared for the first-time in 2000, then it was released in 2002 with .Net Framework 1.0 after that C# evolved so much.

Following is the C# version history and the list of important features which have been introduced in each version of C#:

Version .NET Framework Version Visual Studio C# Features
C# 1.0 .NET framework 1.0 Visual Studio 2002
  • Classes
  • Structs
  • Interfaces
  • Events
  • Properties
  • Delegates
  • Expressions
  • Statements
  • Attributes
  • Literals
C# 1.2 .NET Framework 1.1 --
  • Dispose in foreach
  • foreach over string specialization
C# 2.0 .NET Framework 2.0 Visual Studio 2005
  • Generics
  • Partial types
  • Anonymous methods
  • Iterators
  • Nullable types
  • Getter/setter separate accessibility
  • Method group conversions (delegates)
  • Static classes
  • Delegate inference
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 expression
  • 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 operator
  • Primary constructor
  • Await in catch/finally blocks
  • Exception Filter
  • String Interpolation
  • Compiler-as-a-service (Roslyn)
  • Null propagator (null-conditional operator, succinct null checking)
  • Dictionary initializer
C# 7.0 .NET Core Visual Studio 2017
  • out variables
  • Pattern matching
  • Tuples
  • Deconstruction
  • Discards
  • Pattern Matching
  • Local functions
  • Generalized async return types
  • throw Expressions
  • Ref returns and locals
  • Digit Separators
  • Binary Literals
C# 7.1 .NET Framework 4.7 Visual Studio 2017 version 15.3
  • async Main method
  • default literal expressions
  • Inferred tuple element names
  • Pattern matching on generic type parameters
C# 7.2 .NET Framework 4.7.1 Visual Studio 2017 version 15.5
  • Techniques for writing safe efficient code
  • Non-trailing named arguments
  • Leading underscores in numeric literals
  • private protected access modifier
  • Conditional ref expressions
C# 7.3 .NET Framework 4.7.2 Visual Studio 2017 version 15.7
  • initializers on stackalloc arrays.
  • fixed statements with any type that supports a pattern.
  • System.Enum, System.Delegate and unmanaged constraints.
  • Improved overload candidates
  • Tuple comparison
  • Expression variables in initializers and queries
C# 8.0 .NET Framework 4.8, .NET Core 3.0 Visual Studio 2019 version 16.3
  • Nullable reference types
  • Default interface members
  • Recursive patterns
  • Async streams
  • Readonly members
  • Static local functions
  • Null-coalescing assignment
  • Ranges and indexes
  • Enhanced using

 

C# 9.0 C# 9.0 is supported on .NET 5. Visual Studio 2019 version 16.8, Preview 4
  • Records
  • Init only setters
  • Top-level statements
  • Pattern matching enhancements
  • Native sized integers
  • Function pointers
  • Suppress emitting localsinit flag
  • Target-typed new expressions
  • static anonymous functions
  • Target-typed conditional expressions
  • Covariant return types
  • Extension GetEnumerator support for foreach loops
  • Lambda discard parameters
  • Attributes on local functions\
  • Module initializers
  • New features for partial methods

Share Tweet