Section 1. Introduction . 1.3 C# versions history

C# is pronounced as “Cee-Sharp”. It is an object-oriented programming language provided by Microsoft that runs on .Net Framework.

C# is a general-purpose, modern and object-oriented programming language pronounced as “C Sharp”. It was developed by Microsoft led by Anders Hejlsberg and his team within the .NET initiative and was approved by the European Computer Manufacturers Association (ECMA) and International Standards Organization (ISO).

Anders Hejlsberg
Anders Hejlsberg

It is based on C++ and Java, but it has many additional extensions used to perform component oriented programming approach.

C# has evolved much since their first release in the year 2002. It was introduced with .NET Framework 1.0 and the current version of C# is 10.0.

Let’s see the important features introduced in each version of C# are given below.

VersionRelease date.NET FrameworkVisual StudioMajor Features
C# 1.0January 2002.NET Framework 1.0Visual Studio .NET 2002ClassesStructsInterfaces
C# 1.2April 2003.NET Framework 1.1Visual Studio .NET 2003Basic features
C# 2.0November 2005.NET Framework 2.0
.NET Framework 3.0
Visual Studio 2005
Visual Studio 2008
Partial types
Anonymous methods
Nullable types
Covariance and contravariance
Method group conversions (delegates)
Static classes
Delegate inference
Getter/setter separate accessibility
C# 3.0
November 2007
.NET Framework 2.0 (Except LINQ)
.NET Framework 3.0 (Except LINQ)
.NET Framework 3.5
Visual Studio 2008Auto-implemented properties
Anonymous types
Query expressions
Lambda expressions
Expression trees
Extension methods
Implicitly typed local variables
Partial methods
Object and collection initializers
C# 4.0April 2010.NET Framework 4Visual Studio 2010Dynamic binding
Named/optional arguments
Generic covariant and contravariant
Embedded interop types
C# 5.0August 2012.NET Framework 4.5Visual Studio 2012
Visual Studio 2013
Asynchronous members
Caller info attributes
C# 6.0July 2015.NET Framework 4.6
.NET Core 1.0
.NET Core 1.1
Visual Studio 2015Static imports
Exception filters
Auto-property initializers
Expression bodied members
Null propagator
String interpolation
nameof operator
Index initializers
Await in catch/finally blocks
Default values for getter-only properties
C# 7.0March 2017.NET Framework 4.7Visual Studio 2017 version 15.0Out variables
Tuples and deconstruction
Pattern matching
Local functions
Expanded expression bodied members
Ref locals and returns
Binary Literals and Digit Separators
Throw expressions
C# 7.1August 2017.NET Framework 4.7
.NET Core 2.0
Visual Studio 2017 version 15.3async Main method
default literal expressions
Inferred tuple element names
Pattern matching on generic type parameters
C# 7.2
November 2017
.NET Framework 4.7.1Visual Studio 2017 version 15.5Techniques for writing safe efficient code
Non-trailing named arguments
Leading underscores in numeric literals
private protected access modifier
Conditional ref expressions
C# 7.3May 2018.NET Framework 4.7.2Visual Studio 2017 version 15.7You can access fixed fields without pinning
You can reassign ref local variables
You can use initializers on stackalloc arrays
You can use fixed statements with any type that supports a pattern
You can use additional generic constraints
C# 8.0September 2019.NET Core 3.0
.NET Core 3.1 
Visual Studio 2019 version 16.3Readonly members
Default interface methods
Pattern matching enhancements
Switch expressions
Property patterns
Tuple patterns
Positional patterns
Using declarations
Static local functions
Disposable ref structs
Nullable reference types
Asynchronous streams
Indices and ranges
Null-coalescing assignment
Unmanaged constructed types
Stackalloc in nested expressionsEnhancement of interpolated verbatim strings
C# 9.0 September 2020.NET 5.0Visual Studio 2019 version 16.8Records
Init only setters
Top-level statements
Pattern matching enhancements
Performance and interop (Native sized integers, Function pointers, Suppress emitting localsinit flag)
Fit and finish features (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) Support for code generators
(Module initializers, New features for partial methods)
C# 10.0 November 2021.NET 6.0 Visual Studio 2019
Version 16.11.5
Record structs
Improvements of structure types
Interpolated string handlers
global using directives
File-scoped namespace declaration
Extended property patterns
Improvements on lambda expressions
Allow const interpolated strings
Record types can seal ToString()
Improved definite assignment
Allow both assignment and declaration in the same deconstruction
Allow AsyncMethodBuilder attribute on methods
CallerArgumentExpression attribute
Enhanced #line pragma

Wrapping out

We have learnt about C# versions and features in this article.

Thank you for reading.

Check for more tutorials at

Check for Arduino and Raspberry Pi projects on our website

Section 1. Introduction. 1.1 C# programming language

Section 1. Introduction. 1.2 Introduction to .NET Framework

Section 1. Introduction. 1.3 C# versions history

Section 1. Introduction. 1.4 C# vs Java

Section 1. Introduction. 1.5 C# get started

Section 1. Introduction. 1.6 Your first program – Hello world

Section 1. Introduction. 1.7 C# identifiers and keywords

Section 2. Fundamentals. 2.1 C# Comments

Section 2. Fundamentals. 2.2 C# Data types

Section 2. Fundamentals. 2.3 C# Constants and Literals