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).

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.
Version | Release date | .NET Framework | Visual Studio | Major Features |
---|---|---|---|---|
C# 1.0 | January 2002 | .NET Framework 1.0 | Visual Studio .NET 2002 | ClassesStructsInterfaces Events Properties Delegates Expressions Statements Attributes Literals |
C# 1.2 | April 2003 | .NET Framework 1.1 | Visual Studio .NET 2003 | Basic features |
C# 2.0 | November 2005 | .NET Framework 2.0 .NET Framework 3.0 | Visual Studio 2005 Visual Studio 2008 | Generics Partial types Anonymous methods Nullable types Iterators 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 2008 | Auto-implemented properties Anonymous types Query expressions Lambda expressions Expression trees Extension methods Implicitly typed local variables Partial methods Object and collection initializers |
C# 4.0 | April 2010 | .NET Framework 4 | Visual Studio 2010 | Dynamic binding Named/optional arguments Generic covariant and contravariant Embedded interop types |
C# 5.0 | August 2012 | .NET Framework 4.5 | Visual Studio 2012 Visual Studio 2013 | Asynchronous members Caller info attributes |
C# 6.0 | July 2015 | .NET Framework 4.6 .NET Core 1.0 .NET Core 1.1 | Visual Studio 2015 | Static 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.0 | March 2017 | .NET Framework 4.7 | Visual Studio 2017 version 15.0 | Out variables Tuples and deconstruction Pattern matching Local functions Expanded expression bodied members Ref locals and returns Discards Binary Literals and Digit Separators Throw expressions |
C# 7.1 | August 2017 | .NET Framework 4.7 .NET Core 2.0 | 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 | November 2017 | .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 | May 2018 | .NET Framework 4.7.2 | Visual Studio 2017 version 15.7 | You 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.0 | September 2019 | .NET Core 3.0 .NET Core 3.1 | Visual Studio 2019 version 16.3 | Readonly 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.0 | Visual Studio 2019 version 16.8 | Records 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 acoptex.lt.
Check for Arduino and Raspberry Pi projects on our website acoptex.com.
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