24 years of C# language evolution

C# Version Hub

Explore every version from C# 1.0 (2002) to C# 13 (2024). Features, code samples, deprecated patterns, and milestones.

24Years of Evolution
13Major Versions
28+Features Documented
.NET 9Current Runtime

C# 1.0

January 2002 · .NET Framework 1.0

The Birth of a Modern Managed Language

The foundational release of C#, bringing structured object-oriented programming to the .NET ecosystem.

Object-Oriented FoundationDelegates and Events

C# 2.0

November 2005 · .NET Framework 2.0

Unleashing Code Reuse with Generics

Generics introduced unified type safety along with massive architectural performance boosts to assembly structures.

Generics (<T>)Nullable Value Types (int?)Iterators and yield return

C# 3

November 2007 · .NET Framework 3.5

The Declarative Revolution & LINQ

Merged highly descriptive functional rules seamlessly into structural object ecosystems.

Language Integrated Query (LINQ)Extension Methods

C# 4

April 2010 · .NET Framework 4.0

Dynamic Synergy & Interoperability

Bridges managed runtime flows with dynamic language structures via the DLR platform.

Dynamic Evaluation (dynamic)

C# 5

August 2012 · .NET Framework 4.5

The Async & Await Asynchronous Paradigm

Completely streamlined thread management conventions using state-machine asynchronous abstractions.

Asynchronous async / await

C# 6

July 2015 · .NET Framework 4.6

Roslyn Compiler & Developer Delights

Brought numerous micro-productivity enhancements powered by the ground-up rewrite of the Roslyn compilation pipeline.

Null-Conditional Operator (?.)String Interpolation

C# 7

March 2017 · .NET Core 1.0

Pattern Matching & High-Performance Micro-Allocations

Introduced foundational pattern architecture alongside robust value tuple layouts designed to bypass expensive heap collections.

Lightweight Value TuplesSpan<T> Optimization Hooks (C# 7.2)Ref Struct Declarations (C# 7.2)+1 more

C# 8

September 2019 · .NET Core 3.0

Null Safety & Expressive Switches

Introduced optional reference pointer safeguards to mitigate catastrophic null runtime faults.

Nullable Reference TypesSwitch Expression Assignments

C# 9

November 2020 · .NET 5.0

Unconstrained Data Modeling & Records

Introduced Records providing native compiler validation rules centered on data immutability layouts.

Immutable Records

C# 10

November 2021 · .NET 6.0

Simplifying Structure & Global Space

Drastically lowered structural line requirements across visual code assemblies.

Global Usings Namespace TrackingFile-Scoped Namespace Definitions

C# 11

November 2022 · .NET 7.0

Raw Literals & Pattern-Matching Slices

Brought raw unescaped string blocks, abstract mathematical constructs, and slice list testing paradigms into compiler lines.

Raw String LiteralsRef Fields inside Ref Structs

C# 12

November 2023 · .NET 8.0

Collection Expressions & Primary Constructors

Unified collection declaration patterns while introducing primary syntax workflows to any class structure.

Unified Collection ExpressionsPrimary Constructors for ClassesInline Arrays Allocation Control

C# 13

November 2024 · .NET 9.0

Params Flexibilities & Optimized Lock Architectures

Expanded structural processing capabilities while adding specialized runtime-backed concurrency mechanisms.

Flexible Params CollectionsDedicated Lock Object SupportRef Struct Interface Implementations