C# 8.0 Nullable References
Use C# 8.0 nullable references to signal a possible NullReferenceException.
We'll cover the following...
To prevent a NullReferenceException, we should check and defend against null. The real question is when an object reference might be null and therefore when we should add a null check. That’s precisely what C# 8.0 solves with the nullable references feature.
So far, all references have been nullable by default. But C# 8.0 nullable references change this assumption: all reference variables are now non-nullable by default. This means that when we access the properties or methods of references that might be null, it results in compiler warnings or errors.
This is a big change. Therefore, we need to now turn this feature on at the project level in our .csproj files.
Turning on nullable references
Let’s revisit the example from a previous lesson. This time, let’s turn nullable references on.
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net6.0</TargetFramework><!-- ^^^^^^ --><!-- We could use netcoreapp3.1|net5.0|net6.0 too --><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable><!-- ^^^^^^ --><!-- We could use enable|disable|warning too --><!--<WarningsAsErrors>nullable</WarningsAsErrors>--><!-- ^^^^^^^^ --><!-- We can take the extreme route --></PropertyGroup></Project>
To use nullable references, we need to target .NET Core 3.0 and upward. And, in our .csproj files, inside the <Nullable> node, we could use enable, disable, or warning. Unlike enable, which turns on all compiler checks, the warning ...