When working with text in .NET, one of the most common checks we perform is:
“Does this string have a meaningful value, or is it just empty/null?”
Two helpers exist for this purpose:
At first glance, they may seem similar, but there’s an important distinction that can save you from getting bugs.
Using string.IsNullOrEmpty
This method checks if a string is either:
Console.WriteLine(string.IsNullOrEmpty(null)); // true
Console.WriteLine(string.IsNullOrEmpty("")); // true
Console.WriteLine(string.IsNullOrEmpty(" ")); // false
Console.WriteLine(string.IsNullOrEmpty("abc")); // false
Notice that " "
(spaces only) returns false.
This means IsNullOrEmpty
only guards against null or empty strings, not whitespace.
Using string.IsNullOrWhiteSpace
This method goes one step further: it considers whitespace-only strings as invalid.
Console.WriteLine(string.IsNullOrWhiteSpace(null)); // true
Console.WriteLine(string.IsNullOrWhiteSpace("")); // true
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // true
Console.WriteLine(string.IsNullOrWhiteSpace("abc")); // false
Here, " "
returns true because the method trims out whitespace and checks for emptiness.
Performance Consideration
Both methods are O(n) because they may scan characters (especially IsNullOrWhiteSpace).
For example:
var str = new string(' ', 1000); // 1000 spaces
Console.WriteLine(string.IsNullOrEmpty(str)); // false
Console.WriteLine(string.IsNullOrWhiteSpace(str)); // true
The performance difference only matters when doing millions of checks per second, which is rare in typical business applications.