C# was developed in the year 2002 with the .NET Framework 1.0 and has since continued to develop with enhanced features and performance.
C# is a general-purpose, contemporary, and object-oriented programming language. It was created by Microsoft as part of the.NET program and was authorized by the ECMA (European Computer Manufacturers Association) and the ISO (International Standards Organization).
while writing this article, C# 9.0 is the most recent version.C# 9.0 was released in September 2020 along with .NET 5 platform. If you wish to download .NET 5.0 and try out the features check it from here, download .NET 5
We are eagerly anticipating the release of the language’s newest version, too. There has not yet been an official release date announced for C# 10.0, though it is expected to launch alongside the .NET 6 in November.
Few expected core features in C# version 10 are
Required Properties to make a property required at the time of defining a class
Null Parameter Checking wherein the code automatically verifies whether the param Object is null
Global Usings to define global usings for the whole project for all common usings
File Namespaces enable defining a namespace of the class on the file level
Field Keyword permit the caller to modify the members while construction is in progress
C# Version History Table
This table shows the noteworthy features that were introduced in each new release of C#, which will help as a quick reference guide.
|C# Version||.NET Framework Version||Visual Studio Version||Core Features|
|C# 1.0||.NET Framework 1.0||Visual Studio 2002||Initial Release. Basic Object-Oriented Programming features such as,|
|C# 1.2||.NET Framework 1.1||Visual Studio 2003||Minor enhancements on C# 1.0|
|C# 2.0||.NET Framework 2.0||Visual Studio 2005||Partial classes|
Properties with Private setters
Delegates with Method group conversions
Covariance and Contra-variance
|C# 3.0||.NET Framework 3.0\3.5||Visual Studio 2008||Implicitly typed local variables|
|C# 4.0||.NET Framework 4.0||Visual Studio 2010||Dynamic keyword introduced|
Named Parameters & optional arguments
Generic covariant and contravariant
Embedded interop types
|C# 5.0||.NET Framework 4.5||Visual Studio 2012/2013||Asynchronous members|
Caller information attributes
|C# 6.0||.NET Framework 4.6||Visual Studio 2013/2015||Expression Bodied Methods|
name of Expression
Await in the catch block
|C# 7.0||.NET Core 2.0||Visual Studio 2017||Tuples|
Generalized async return types
Ref returns and locals
|C# 7.1||.NET Core||Visual Studio 2017||Default literal expression|
Inferred Tuple element names
|C# 7.2||.NET Core||Visual Studio 2017||Non-trailing named argument|
Private protected access modifier
Leading underscores in numeric literals
|C# 7.3||.NET Core||Visual Studio 2018||Using additional generic constraints|
Reassigning ref local variables
Accessing fixed fields without pinning
|C# 8.0||.NET Core 3.0||Visual Studio 2019||Readonly members|
Default interface methods
Pattern matching enhancements
Static local functions
Readonly struct members
Default interface members
Indices and ranges
Disposable ref struct
Nullable reference types
Null coalescing assignment
Unmanaged constructed types
|C# 9.0||.NET 5||Visual Studio 2019||Immutable representation of data shapes|
New Record types
Init only setters
Covariant return types.
Native Sized integers
|C# 10.0||.NET 6||Visual studio 2022||Null Parameter Checking|
Const interpolated strings.
Record types can seal ToString()
Allows both declaration and assignment
in the same deconstruction.
In this article, we had a brief overview of the C# version history, and the features included in each version of C#. This history of C# will be useful for quick reference. Hope you find this article helpful. Leave your valuable feedback below.