C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Important: We cannot check the first char of an empty string. An IndexOutOfRangeException will occur.
Part A: We test a null string with string.IsNullOrEmpty and the results are as expected—the method returns true.
Part B: We test an empty string literal with string.IsNullOrEmpty, and the method returns true again.
Part C: The name of the site author does not return true, because it is not null or empty.
C# program that uses string.IsNullOrEmpty
using System;
class Program
{
static void Main()
{
// Part A: 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 B: 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 C: 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");
}
}
}
Output
Null or empty
Null or empty
Not null and not empty
Example: Whitespace characters in C# programs can be encoded as \n for new lines, \r for carriage returns, or even \v for vertical spaces.
And: Not only this, but whitespaces can include regular spaces and tab characters \t.
Note: IsNullOrWhiteSpace handles all these cases. It scans the entire input string if the string has more than one whitespace character.
Tip: The string must be entirely whitespace chars or null for the result to be true.
C# program that uses IsNullOrWhiteSpace
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("dotnetCodex");
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
Console.WriteLine(f);
Console.WriteLine(g);
}
}
Output
True
True
True
True
True
True
False
Also: The IsNullOrWhiteSpace method returns early if it finds a non-whitespace character.
Performance: IsWhiteSpace has some indirections that can be removed if you are not using Unicode data.
So: Using custom methods to test for whitespace may be faster in micro-benchmarks (and some real programs too).
OptimizationImplementation in .NET Framework: C#
public static bool IsNullOrWhiteSpace(string value)
{
if (value != null)
{
for (int i = 0; i < value.Length; i++)
{
if (!char.IsWhiteSpace(value[i]))
{
return false;
}
}
}
return true;
}
Version 1: We call the string.IsNullOrEmpty method on the string, and it returns false each time.
Version 2: We test the string for null, and also to see if it has a Length of 0. So we inline the tests.
Result: We find that string.IsNullOrEmpty is slower than inlined tests. But the code for it is much clearer, which is a huge positive.
C# program that benchmarks string.IsNullOrEmpty
using System;
using System.Diagnostics;
class Program
{
const int _max = 100000000;
static void Main()
{
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"));
}
}
Output
1.34 ns string.IsNullOrEmpty
0.84 ns null, Length
Return: IsNullOrEmpty returns bool—either true or false. This indicates whether the string is empty or null.
So: In other words, if the string has something substantial in it, the result bool will be false.
BoolBool Method