IsNullOrEmpty
The string.IsNullOrEmpty
method tests strings. It checks for string
references that are null
or have no data. IsNullOrWhiteSpace
tests for whitespace.
Strings are reference types and can be equal to null
. Often our programs want to handle empty, null
, or whitespace strings in special ways. These 2 methods are ideal here.
IsNullOrEmpty
Here, we look at examples of IsNullOrEmpty
. The 3 parts in the code samples how the IsNullOrEmpty
method matching a null
string
, an empty string
, and then a normal string
.
char
of an empty string
. An IndexOutOfRangeException
will occur.null
string
with string.IsNullOrEmpty
and the results are as expected—the method returns true.string
literal with string.IsNullOrEmpty
, and the method returns true again.null
or empty.using System; // Part 1: test with IsNullOrEmpty. string s = null; if (string.IsNullOrEmpty(s) == true) { // True. Console.WriteLine("Null or empty"); } else { Console.WriteLine("Not null and not empty"); } // Part 2: test with IsNullOrEmpty again. string y = ""; if (string.IsNullOrEmpty(y) == true) { // True. Console.WriteLine("Null or empty"); } else { Console.WriteLine("Not null and not empty"); } // Part 3: test with IsNullOrEmpty without writing true. string z = "sam"; if (string.IsNullOrEmpty(z)) { // False. Console.WriteLine("Null or empty"); } else { Console.WriteLine("Not null and not empty"); }Null or empty Null or empty Not null and not empty
IsNullOrWhiteSpace
This method tests an entire string
. It returns true if the string
contains only whitespace characters or is null
.
IsNullOrWhiteSpace
handles all whitespace (not just spaces). It scans the entire input string
if needed.string
must be entirely whitespace chars or null
for the result to be true.using System; class Program { static void Main() { bool a = string.IsNullOrWhiteSpace(" "); bool b = string.IsNullOrWhiteSpace("\n"); bool c = string.IsNullOrWhiteSpace("\r\n\v "); bool d = string.IsNullOrWhiteSpace(null); bool e = string.IsNullOrWhiteSpace(""); bool f = string.IsNullOrWhiteSpace(string.Empty); bool g = string.IsNullOrWhiteSpace("dotnetperls"); Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d); Console.WriteLine(e); Console.WriteLine(f); Console.WriteLine(g); } }True True True True True True False
IsNullOrEmpty
We compare ways of checking strings. The string
is tested against null
before checking its length—this avoids a null
reference exception.
string.IsNullOrEmpty
method on the string
, and it returns false each time.string
for null
, and also to see if it has a Length
of 0. So we inline the tests.string.IsNullOrEmpty
is slower than inlined tests. But the code for it is much clearer, which is a huge positive.using System; using System.Diagnostics; const int _max = 100000000; string tested = "test"; var s1 = Stopwatch.StartNew(); // Version 1: call IsNullOrEmpty. for (int i = 0; i < _max; i++) { if (string.IsNullOrEmpty(tested)) { return; } } s1.Stop(); var s2 = Stopwatch.StartNew(); // Version 2: use inlined tests. for (int i = 0; i < _max; i++) { if (tested == null || tested.Length == 0) { return; } } s2.Stop(); Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));1.34 ns string.IsNullOrEmpty 0.84 ns null, Length
IsNullOrEmpty
This method detects null
and empty strings in a single call. It is static
—this means it can be called to test a null
string
, and no exception is raised.
IsNullOrEmpty
returns bool
—either true or false. This indicates whether the string
is empty or null
.string
has something substantial in it, the result bool
will be false.IsNullOrEmpty
How is IsNullOrEmpty
implemented? It simply tests for null
and then a Length
equal to 0. It provides no magic optimizations (as testing also shows).
IsNullOrEmpty
, a string
method, gives us a way to check whether a string
is acceptable to save or use. For performance it may be better to use manual null
checks.