Foreword

This specification replaces ECMA-334:2022. Changes from the previous edition include the addition of the following:

  • Binary integer literals
  • Embedded digit separators in numeric literals
  • Leading-digit separators in binary and hexadecimal integer literals
  • out variables
  • Discards
  • Tuple types
  • Pattern Matching
  • ref locals and returns, conditional ref expressions, ref with this in extension methods, and reassignment of ref local variables
  • Local Functions
  • More expression-bodied members
  • throw Expressions
  • Generalized async return types
  • async Main method
  • default literal expressions
  • Non-trailing named arguments
  • private protected access modifier
  • in parameter modifier
  • readonly structs
  • ref structs
  • Indexing movable fixed buffer without pinning
  • Initializers on stackalloc arrays
  • Pattern-based fixed statements
  • System.Delegate and System.Enum as class_type constraints.
  • Additional generic constraints
  • Allow expression variables in more locations
  • Attach attributes to the backing field of auto-implemented properties
  • Reduce ambiguity of overload resolution