C# 8.0 features
Extension everything — a new syntax for extension methods that will also allow extension “other things,” like the much-anticipated extension properties.
Default implementations on interfaces — this allows you to implement methods on interfaces, giving them a default implementation. That will enable you to add new methods to interfaces without breaking its clients.
Nullable reference types — probably one of the most anticipated features ever. It’s a reinterpretation (a “retcon” for you comic book geeks out there) of all the reference types as nullable and the introduction of a new syntax to denote nullable types, accompanied by several types of static checks, to prevent several classes of errors regarding these types. Say farewell to the null reference exception!
Null coalescing assignment — a very simple feature to shorten the check for null before assigning to a variable.
Records — this one is pretty interesting. It’s basically a very short way for you to declare classes that are only data holders. The compiler gives you Equals and GetHashCode implementations, a constructor, properties, and immutability for free, allowing you to do something more interesting with your life than writing loads of boilerplate code.
Target-typed “new” expressions — a way for you to omit the type from a constructor call, making the code simpler and less redundant.
Covariant return types — a much-anticipated feature that allows an overriding method to return a more derived type than the original type from the base class.