The major features added in C# in each release

C# 2.0:

  • Generics (.NET Framework support was added, and C# benefited from this)
  • Partial Types
  • Iterator pattern (the yield keyword)
  • Anonymous methods (the delegate keyword)
  • Nullable types
  • Coalescing operator (??)
  • Getter/setter separate accessiblity
  • Method group conversions(delegates)
  • Co- and Contra-variance for delegates
  • Static classes

C# 3.0

  • Object initializers
  • Collection initializers
  • Implicitly typed local variables (var keyword)
  • Anonymous types
  • Extension methods
  • Query expressions
  • Lambda expressions (=>)
  • Expression trees
  • Partial methods

C# 4.0

  • Optional Parameters and Named Arguments
  • Dynamic binding(dynamic type)
  • Improved COM-Interop
  • Generic co- and contravariance

C# 5.0

  • Asynchronous methods
  • Caller info attributes
  • Compiler-as-a-service

C# 6.0

  • Import of static type members into namespace
  • Exception filters
  • Await in catch/finally blocks
  • Auto property initializers
  • Default values for getter-only properties
  • Expression-bodied members
  • Null propagator (Succinct null checking)
  • String Interpolation
  • nameof operator
  • Parameterless struct constructors
  • Dictionary initializer

C# 7.0 (Proposals)

  • Declaration expressions
  • Parameter arrays for IEnumerable interfaces