| Check | Code | Description |
| Is Null | if(variable is null) return true; | -
This syntax supports static analysis such that later code will know whether variable is null or not. -
Doesn’t produce a warning even when comparing against a non-nullable value type making the code to check pointless. -
Requires C# 7.0 because it leverages type pattern matching. |
| Is Not Null | if(variable is { }) return false | -
This syntax supports static analysis such that later code will know whether variable is null or not. -
Requires C# 8.0 since this is the method for checking for not null using property pattern matching. |
| Is Not Null | if(variable is object) return false | -
Triggers a warning when comparing a non-nullable value type which could never be null -
This syntax works with C# 8.0’s static analysis so later code will know that variable has been checked for null. - Checks if the value not null by testing whether it is of type object. (Relies on the fact that null values are not of type object.)
|
| Is Null | if(variable == null) return true | -
The only way to check for null prior to C# 7.0. -
However, because the equality operator can be overridden, this has the (remote) possibility of failing or introducing a performance issue. |
| Is Not Null | if(variable != null) return false | -
The only way to check for not null prior to C# 7.0. -
Since the not-equal operator can be overridden, this has the (remote) possibility of failing or introducing a performance issue. |