Track this at the feature status page on the roslyn repository. Those features with "Merged" status are already available in preview.
tasks for each C# 9.0 feature
The Records and Pattern matching enhancements will likely affect the new Fundamentals sections. Other features may be covered in advanced, or primarily in update your skills
related: #19705
List of tasks for Records:
class types.List of tasks for Top-level statements*:
Main method responds to the presence of await expressions in top-level statements.List of tasks for Pattern matching enhancements:
and, or, not and parentheses in patterns.e is not null syntaxis keyword, the switch expression page.List of tasks for Init only setters:
init keywords to property accessors in language reference.init cannot be added to properties in readonly structs.Other features: My current opinion is the other new features are both targeted in scope and impact for most developers that the following should happen:
Full task list
Native sized integers
The nint and nuint types need to be added to the language reference page on built-in types. The key points are that max value is for a 32 bit machine, and that constant folding is constrained to 32 bits.
Function pointers
delegate should include the delegate* syntax.Target type new
new needs to be updated to add the new syntax.var needs to point to target type new as an alternative.new() can be used to create the default instance of an argument type. Other
override should include the new rules for covariant return types.foreach in should add that GetEnumerator could be an extension method.ModuleInitializerAttribute. All the rules on the initializer must be detailed.SkipLocalsInitAttribute.