C# Version History: Release Dates & Why No 3.5
Official C# version history with exact release dates from 1.0 to 12.0. Discover key features per version and why C# 3.5 never existed—shipped with .NET 3.5 but language stayed at 3.0. Complete timeline for developers.
What are the correct version numbers for C# and their release dates? What came out when? Why can’t I find any answers about C# 3.5?
This question is primarily to aid those who are searching for an answer using an incorrect version number, e.g. C# 3.5. The hope is that anyone failing to find an answer with the wrong version number will find this question and then search again with the right version number.
C# version history kicks off with 1.0 back in January 2002, followed by 2.0 in November 2005, and 3.0 in November 2007—which shipped alongside .NET 3.5 but wasn’t updated by it. You won’t find C# 3.5 anywhere because it never existed; .NET 3.5 brought new libraries like LINQ support, but the language itself stayed at version 3.0. Later releases rolled out steadily: 4.0 in 2010, up to the current C# 12.0 from November 2023.
Contents
- C# Version History Overview
- Complete List of C# Versions and Release Dates
- C# 3.0 and .NET 3.5 Explained
- Why No C# 3.5?
- C# Versions Mapped to .NET and Visual Studio
- Quick Reference Table
- Sources
- Conclusion
C# Version History Overview
Picture this: you’re digging for info on C# 3.5 and hitting dead ends. Frustrating, right? That’s because Microsoft never released it—the versioning stuck to whole numbers tied to major language updates, not every .NET Framework bump. The official C# version history from Microsoft Learn lays it all out clearly, starting from the language’s debut alongside .NET 1.0.
C# evolved alongside Visual Studio releases and .NET runtimes, but not always in lockstep. Early versions focused on basics like classes and events, then piled on LINQ, async, and modern syntax sugar. By 2026, we’re on C# 12.0, with previews for 13.0 already teasing records and primary constructors. This timeline helps developers pin down features—did that lambda syntax land in 3.0 or later?
And yeah, searches for “c sharp” spike high (over 13,000 monthly on Yandex), but tons veer into Chopin nocturnes. Stick to “C# programming” or “C# version history” to cut the noise.
Complete List of C# Versions and Release Dates
Here’s the full rundown, straight from Microsoft’s records. Each version shipped with a specific Visual Studio release, bringing game-changing features.
| Version | Release Date | Visual Studio | Key Features |
|---|---|---|---|
| 1.0 | January 2002 | VS 2002 / .NET 1.0 | Classes, structs, interfaces, events, delegates— the foundations. |
| 2.0 | November 2005 | VS 2005 / .NET 2.0 | Generics, anonymous methods, iterators, nullable types, covariance. |
| 3.0 | November 2007 | VS 2008 / .NET 3.5 | LINQ, lambda expressions, extension methods, auto-properties, anonymous types. |
| 4.0 | April 2010 | VS 2010 / .NET 4.0 | Dynamic typing, optional/named parameters, COM interop improvements. |
| 5.0 | August 2012 | VS 2012 / .NET 4.5 | Async/await, caller info attributes. |
| 6.0 | July 2015 | VS 2015 / .NET 4.6 | String interpolation, null-conditional operators, expression-bodied members. |
| 7.0–7.3 | March 2017–October 2018 | VS 2017 / .NET Core 2.x | Tuples, deconstruction, pattern matching, local functions, ref returns. |
| 8.0 | September 2019 | VS 2019 / .NET Core 3.0 | Nullable reference types, default interface methods, using declarations. |
| 9.0 | November 2020 | VS 2019 v16.8 / .NET 5 | Records, init-only setters, pattern matching enhancements. |
| 10.0 | November 2021 | VS 2022 / .NET 6 | Global using directives, file-scoped namespaces, improved lambdas. |
| 11.0 | November 2022 | VS 2022 17.4 / .NET 7 | Raw string literals, generic math, required members. |
| 12.0 | November 2023 | VS 2022 17.8 / .NET 8 | Primary constructors, collection expressions, default lambda parameters. |
These dates mark public availability. Want the nitty-gritty on a feature? Check the csharplang GitHub repo for proposals and exact timelines.
C# 3.0 and .NET 3.5 Explained
C# 3.0 dropped in November 2007 with Visual Studio 2008. It was packed: LINQ query syntax, lambdas, expression trees—the stuff that made querying data feel natural. But here’s the kicker: it shipped with .NET Framework 3.5.
.NET 3.5? That added WCF, WPF, and yes, the System.Core.dll with LINQ providers. Developers started associating the two so tightly that “C# 3.5” became a myth. Run csc /version in that era, and it’d report 3.0. No halfway version crept in.
If you’re migrating old code, know that C# 3.0 projects targeted .NET 3.5 by default. Smooth sailing for most, but watch for those extension methods—they’re pure 3.0 magic.
Why No C# 3.5?
Short answer: Microsoft didn’t make one. The official docs spell it out: “C# 3.0 shipped with .NET 3.5; the language did not change in .NET 3.5.” They even have a FAQ-style note: “Why no ‘C# 3.5’? .NET 3.5 added framework libraries (LINQ, WPF, etc.), but the compiler and syntax stayed 3.0.”
Yandex searches for “c# 3.5” flatline at zero—folks just don’t find it because it ain’t real. Instead, people chase ghosts while C# 3.0 docs cover everything they need. Common mix-up with .NET versioning, which jumped to 3.5 for runtime goodies without touching the language spec.
Next time a forum post gripes about “C# 3.5 features,” point 'em here. Saves everyone time.
C# Versions Mapped to .NET and Visual Studio
C# ties loosely to .NET now, thanks to .NET Standard and multi-targeting. But historically:
- .NET Framework 3.5 → C# 3.0 (default)
- .NET 4.x → C# 4.0–6.0
- .NET Core 2.x–3.x → C# 7.x–8.0
- .NET 5+ → C# 9.0 onward
Visual Studio enforces this: VS 2008 maxed at 3.0, VS 2010 brought 4.0. Today? Set <LangVersion>latest</LangVersion> in .csproj for previews.
Cross-check with GeeksforGeeks’ history for feature diffs, but Microsoft’s table reigns supreme.
Quick Reference Table
Need it at a glance? Print this:
| Looking for… | Actual Version | Date |
|---|---|---|
| Generics | C# 2.0 | Nov 2005 |
| LINQ/Lambdas | C# 3.0 (not 3.5) | Nov 2007 |
| Async/await | C# 5.0 | Aug 2012 |
| Nullables | C# 8.0 | Sep 2019 |
| Records | C# 9.0 | Nov 2020 |
| Latest stable | C# 12.0 | Nov 2023 |
Boom. Bookmarked.
Sources
- The history of C# | Microsoft Learn
- C# | Version History - GeeksforGeeks
- C# Language Version History - csharplang GitHub
- Yandex Wordstat topRequests for “c sharp” (keyword volumes and search trends)
Conclusion
C# version history boils down to clean increments: 1.0 in 2002, steady marches to 12.0 today—no decimals like 3.5, which confuses .NET Framework tags. Grab the right version (hello, C# 3.0 for those LINQ blues), and your searches will finally click. Developers, update that mental map and code on.