C# language version history:
These are the versions of C# known about at the time of this writing:
- C# 1.0 released with .NET 1.0 and VS2002 (January 2002)
- C# 1.2 (bizarrely enough); released with .NET 1.1 and VS2003 (April 2003). First version to call
IEnumerators which implemented
IDisposable. A few other small features.
- C# 2.0 released with .NET 2.0 and VS2005 (November 2005). Major new features: generics, anonymous methods, nullable types, iterator blocks
- C# 3.0 released with .NET 3.5 and VS2008 (November 2007). Major new features: lambda expressions, extension methods, expression trees, anonymous types, implicit typing (
var), query expressions
- C# 4.0 released with .NET 4 and VS2010 (April 2010). Major new features: late binding (
dynamic), delegate and interface generic variance, more COM support, named arguments, tuple data type and optional parameters
- C# 5.0 released with .NET 4.5 and VS2012 (August 2012). Major features: async programming, caller info attributes. Breaking change: loop variable closure.
- C# 6.0 released with .NET 4.6 and VS2015 (July 2015). Implemented by Roslyn. Features: initializers for automatically implemented properties, using directives to import static members, exception filters, element initializers,
Addmethods in collection initializers.
- C# 7.0 released with .NET 4.7 and VS2017 (March 2017). Major new features: tuples, ref locals and ref return, pattern matching (including pattern-based switch statements), inline
outparameter declarations, local functions, binary literals, digit separators, and arbitrary async returns.
- C# 7.1 released with VS2017 v15.3 (August 2017) New features: async main, tuple member name inference, default expression, pattern matching with generics.
- C# 7.2 released with VS2017 v15.5 (November 2017) New features: private protected access modifier, Span<T>, aka interior pointer, aka stackonly struct, everything else.
- C# 7.3 released with VS2017 v15.7 (May 2018). New features: enum, delegate and
unmanagedgeneric type constraints.
refreassignment. Unsafe improvements:
stackallocinitialization, unpinned indexed
fixedstatements. Improved overloading resolution. Expression variables in initializers and queries.
!=defined for tuples. Auto-properties’ backing fields can now be targeted by attributes.
- C# 8.0 released with .Net Core 3.0 and VS2019 v16.3 (September 2019). Major new features: nullable reference-types, Asynchronous streams, Indices and Ranges, Readonly members, using declarations,default interface methods, Static local functions and Enhancement of interpolated verbatim strings.
- C# 9.0 released with .Net 5.0 and VS2019 v16.8 (November 2020). Major new features: init-only properties, records, with-expressions, data classes, positional records, top-level programs, improved pattern matching (simple type patterns, relational patterns, logical patterns), improved target typing (target-type
newexpressions, target typed
?), covariant returns. Minor features: relax ordering of
partialmodifiers, parameter null checking, lambda discard parameters, native
ints, attributes on local functions, function pointers, static lambdas, extension
GetEnumerator, module initializers, extending partial.