The C# language relies on types and methods in a standard library for some of the features. One example is exception processing. Every throw statement or expression is checked to ensure the object being thrown is derived from Exception. Similarly, every catch is checked to ensure that the type being caught is derived from Exception. Each version may add new requirements. To use the latest language features in older environments, you may need to install specific libraries. These dependencies are documented in the page for each specific version. You can learn more about the relationships between language and library for background on this dependency.
To use the latest features in a point release, you need to configure the compiler language version and select the version.

Previous Versions

The following lists key features that were introduced in previous versions of the C# language and Visual Studio .NET.
  • Visual Studio .NET 2013:
    • This version of Visual Studio included bug fixes, performance improvements, and technology previews of .NET Compiler Platform ("Roslyn") which became the .NET Compiler Platform SDK.
  • C# 5, Visual Studio .NET 2012:
  • C# 4, Visual Studio .NET 2010:
  • C# 3, Visual Studio .NET 2008:
    • Object and collection initializers, lambda expressions, extension methods, anonymous types, automatic properties, local var type inference, and Language Integrated Query (LINQ).
  • C# 2, Visual Studio .NET 2005:
    • Anonymous methods, generics, nullable types, iterators/yield, static classes, and covariance and contra variance for delegates.
  • C# 1.1, Visual Studio .NET 2003:
    • #line pragma and xml doc comments.
  • C# 1, Visual Studio .NET 2002:
    • The first release of C#.