top of page
Black screen.jpg

C# Version 1.0: January 2002

Very similar to Java.

C# Version 2.0: November 2005

Added generics, partial types, anonymous methods, nullable value types, covariance and contravariance, and iterators.

C# Version 4.0: April 2010

Added dynamic binding, named/optional arguments, generic covariant and contravariant, and embedded interop types.

July 2015, C# Version 6.0:
Added static imports, exception filters, auto-property initializers, expression bodied members, and null propagator.

August 2017, C# Version 7.1:
Added async Main method, default literal expression, inferred tuple elements name, and pattern matching on generic type parameters.

May 2018, C# Version 7.3:
Added access to fixed fields without pinning, ability to reassign ref local variables, use initializers in stackalloc arrays, use fixed statements with any type that supports a pattern, and use more generic constraints.

November 2020, C# Version 9:
Added records, init only setters, top-level statements, pattern matching enhancements, performance, and interop, fit and finish features, and support for code generators.

November 2021, C# Version 10:
Added 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, and enhanced #line pragma.

C# Version 1.2: April 2003

The code generated foreach loop called Dispose on an IEnumerator when the IEnumerator implemented IDisposable.

C# Version 3.0: November 2007

Added auto-implemented properties, anonymous types, query expressions, lambda expressions, expression trees, extension methods, implicitly typed local variables, partial methods, and object and collection initializers.

C# Version 5.0: August 2012

Added asynchronous members and caller info attributes.

C# Version 7.0: March 2017

Added out variables, tuples and deconstruction, pattern matching,
local functions, expanded expression bodied members, ref locals, and ref returns.

November 2017, C# Version 7.2:
Added initializers on stackalloc arrays, use fixed statements with any type that supports a pattern, access fixed fields without pinning, reassign ref local variable, declare readonly struct types, add the in modifier on parameters, use the ref readonly modifier on method returns, declare ref struct types, use additional generic constraints, non-trailing named arguments, leading underscores in numeric literals, private protected access modifier, and conditional ref expressions.

September 2019, C# Version 8.0:
Added readonly members, default interface methods, pattern matching enhancements, 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 expressions, and enhancement of interpolated verbatim strings.

November 2022, C# Version 11:
Added raw string literals, generics math support, generic attributes, UFT-8 string literals, newlines in string interpolation expressions, list patterns, file-local types, required members, auto-default structs, pattern match Span<char> on a constant string, extended nameof scope, numeric IntPtr, ref fields and scoped ref, improved method group conversion to delegate, and warning wave 7.

bottom of page