C# Tutorial · C# Basics · Lesson 7 of 22

C# History & Versions

How Microsoft created C# and .NET, how they became open source and cross-platform, every C# version from 1.0 to 14 on one timeline, and which .NET version to use today.

How C# started

At the end of the 1990s Microsoft was building a new platform, .NET, for Windows and web applications. It needed a modern, object-oriented language that was safer than C++ and easier than it, with garbage collection and a rich class library. A team led by Anders Hejlsberg, the designer of Turbo Pascal and Delphi, created C# (pronounced "C sharp"). It was announced in July 2000 and shipped with the .NET Framework 1.0 and Visual Studio .NET in February 2002. C# is also an international standard (ECMA-334, ISO/IEC 23270).

C# code compiles to Intermediate Language (IL), which the .NET runtime compiles to machine code as the program runs. Several languages share that runtime, including F# and Visual Basic, and they can use each other's libraries.

For its first decade C# ran almost only on Windows. The open-source Mono project (2004) brought it to Linux and macOS, and Microsoft later bought Xamarin, the company behind Mono. Then Microsoft changed course: the Roslyn compiler became open source in 2014, and the cross-platform, open-source .NET Core arrived in 2016. Since .NET 5 (2020) there is a single ".NET" for Windows, Linux, macOS, mobile and the cloud.

Timeline of C# versions

Each C# version ships with a .NET release. The status shows the support of that .NET version.

  1. C# 14Current
    • Ships with .NET 10 (LTS, supported until Nov 2028)
    • Extension members (extension properties and static extensions), the field keyword in properties, null-conditional assignment customer?.Order = order
  2. C# 13Supported until Nov 2026
    • .NET 9 (STS): params collections, the new Lock type, partial properties, the \e escape
  3. C# 12LTS until Nov 2026
    • .NET 8 (LTS): primary constructors for classes, collection expressions [1, 2, 3], default lambda parameters
  4. C# 11End of life · May 2024
    • .NET 7: raw string literals """...""", required members, list patterns, generic math
  5. C# 10End of life · Nov 2024
    • .NET 6 (LTS): global using, file-scoped namespaces, record struct
  6. C# 9End of life · May 2022
    • .NET 5, the first unified .NET: records, init-only setters, top-level statements
  7. C# 8Historic
    • .NET Core 3.0: nullable reference types, async streams, switch expressions, ranges [1..^1]
  8. C# 7.0Historic
    • Tuples (int, string), pattern matching, out var, local functions
  9. C# 6.0Historic
    • String interpolation $"Hi {name}", the ?. operator, nameof, expression-bodied members; first release on the open-source Roslyn compiler
  10. C# 5.0Historic
    • async / await (C# made this pattern popular before most other languages adopted it)
  11. C# 4.0Historic
    • dynamic, named and optional arguments, generic variance
  12. C# 3.0Historic
    • LINQ, lambda expressions, var, extension methods, anonymous types
  13. C# 2.0Historic
    • Generics, nullable value types int?, iterators with yield, partial classes
  14. C# 1.0Historic
    • The first release, with .NET Framework 1.0 and Visual Studio .NET

How C# and .NET modernized

  • Open source and cross-platform. Roslyn (2014), .NET Core (2016) and the unified .NET 5 (2020) turned a Windows-only stack into an open-source platform that runs everywhere and is developed on GitHub.
  • A yearly rhythm. A new .NET and C# ship every November. Even-numbered .NET versions are LTS (three years of support); odd-numbered ones are STS (standard term, two years).
  • Safer code. Nullable reference types (C# 8) let the compiler warn about possible null mistakes.
  • Less ceremony. Records, top-level statements, global usings, primary constructors and collection expressions cut a lot of boilerplate; a small program can now be a single line.
  • Performance. Span<T>, ahead-of-time compilation (Native AOT) and constant runtime work made modern .NET one of the fastest managed platforms.

.NET Framework vs modern .NET

Topic .NET Framework 4.8 Modern .NET (8, 9, 10)
Platforms Windows only Windows, Linux, macOS, containers, mobile
Source Closed (reference source only) Open source on GitHub
New features Maintenance only; ships with Windows New version every November
Latest C# C# 7.3 officially C# 14
Performance Older runtime Much faster runtime, Native AOT, SIMD
Use it for Existing Windows apps (WinForms, WPF, ASP.NET) All new development

Which version should you use?

  • New projects: .NET 10 with C# 14 (LTS until November 2028).
  • Existing projects: .NET 8 and .NET 9 both reach end of support on 10 November 2026, so plan the upgrade to .NET 10 now. Keep .NET Framework only for Windows apps you can't move yet.
  • This tutorial: examples are compiled and run with the .NET SDK when we build the lessons, and their real output is shown under each example. C# examples can't run in your browser.

Official resources

Last reviewed 21 October 2026. Release and support dates come from the official release pages linked above.