Determine Which Mechanism Is Most Effective to Check for Null
It turns out there are numerous ways to check for null or not null, which begs the question, which should you use?
Not surprisingly, it depends.
Null/Not Null Mechanisms Table
Here’s a table describing the various mechanisms to check for null and their advantages and disadvantages.
Check For | Code Checks For Null | Description |
---|---|---|
Is Null | if(variable is null) return true; | |
Is Not Null | if(variable is { }) return false | |
Is Not Null | if(variable is object) return false | Checks if the value is 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 | |
Is Not Null | if(variable != null) return false |
Test Source Code
#nullable enable
string ? nullableText = "Inigo";
Assert.IsTrue(nullableText is object && nullableText is {});
nullableText = null;
Assert.IsFalse(nullableText is object || nullableText is {});
string notNullableText = "Inigo";
Assert.IsTrue(notNullableText is object && notNullableText is {});
notNullableText = null!; // Initentionally ignore the null assignment
Assert.IsFalse(notNullableText is object || notNullableText is {});
int ? nullableNumber = 42;
Assert.IsTrue(nullableNumber is object && nullableNumber is {});
nullableNumber = null;
Assert.IsFalse(nullableNumber is object || nullableNumber is {});
int notNullableNumber = 42;
Assert.IsTrue(
// CS0183 - The given expression is always of the provided('object') type
#pragma warning disable 0183 notNullableNumber is object #pragma warning restore 0183 &&
notNullableNumber is {});
// notNullableNumber = null;
// Error: Can't assing null to non-nullable value type
Code language: PHP (php)
Ready for More?
Check out this video on the improvements and new features released in C# 9.0!

Does Your Organization Need a Custom Solution?
Let’s chat about how we can help you achieve excellence on your next project!
Comments are closed.