Version 8 of Microsoft’s C# language will have nullable reference types, to improve code quality, according to the latest roadmap for the programming language from the .Net Foundation, which oversees the open source .Net that C# is part of. The feature will add safe reference types in addition to the existing ones that will be called non-nullable. Compilers will warn you when nullable types are dereferenced or when null is values are assigned to non-nullable variable types.
The nullable reference type is intended to help developers prevent null reference exceptions. A core of the capability is expressing an intent to be null. The compiler will recognize when something is not null and warn you when you’ve assigned null to a reference that was not declared as null. With the capability, developers get an assist in finding bugs and making them go away.
Microsoft declined to say when C# 8 will arrive.
- An opt-in means to deal with breaking behavior.
- A default interfaces programming capability, so interfaces can be evolve via virtual extension methods. An API author could add methods to an interface in future versions without breaking source or binary compatibility. The feature already is available in languages such as Java.
- An async streams feature to provide an abstraction that is the asynchronous version of
IEnumerable, which is the base interface for nongeneric collections that can be enumerated.
- Extension everything, to provide a way to define new kinds of extension members. Although it is already possible in C# to define methods that act as instance methods of the extended type, the C# 8 proposal expands this capability by supporting static and instance members.