There is my Visual studio settings (Visual studio 2008) : Sam_Exported-2009-12-02
It’s the “ragnarok” theme with a few modifications

There is my Visual studio settings (Visual studio 2008) : Sam_Exported-2009-12-02
It’s the “ragnarok” theme with a few modifications

In C# you can check if a string is null or empty in many ways :
string String1 = "testString";
if (String1== null || String1 == "")
{
// ...
}
else
{
// ...
}
string String1 = "testString";
if (String1 == null || String1.Length==0)
{
// ...
}
else
{
// ...
}
string String1 = "testString";
if (string.IsNullOrEmpty(String1))
{
// ...
}
else
{
// ...
}
The last one is more readable.
But what about performances ?
Check this code :
private void CheckForNullOrEmpty()
{
int maxIterations = 9999999;
Console.WriteLine("if (string.IsNullOrEmpty(String1))");
Stopwatch watch = Stopwatch.StartNew();
for (int i = 0; i < maxIterations; i++)
{
string String1 = "testString";
if (string.IsNullOrEmpty(String1))
{
// ...
}
else
{
// ...
}
}
watch.Stop();
Console.WriteLine("\tTime : " + watch.Elapsed.TotalMilliseconds);
Console.WriteLine(Environment.NewLine);
Console.WriteLine("if (String1== null || String1 == \"\"");
watch = Stopwatch.StartNew();
for (int i = 0; i < maxIterations; i++)
{
string String1 = "testString";
if (String1 == null || String1 == "")
{
// ...
}
else
{
// ...
}
}
watch.Stop();
Console.WriteLine("\tTime : " + watch.Elapsed.TotalMilliseconds);
Console.WriteLine(Environment.NewLine);
Console.WriteLine("if (String1 == null || String1.Length==0)");
watch = Stopwatch.StartNew();
for (int i = 0; i < maxIterations; i++)
{
string String1 = "testString";
if (String1 == null || String1.Length == 0)
{
// ...
}
else
{
// ...
}
}
watch.Stop();
Console.WriteLine("\tTime : " + watch.Elapsed.TotalMilliseconds);
Console.WriteLine(Environment.NewLine);
Console.WriteLine(Environment.NewLine);
Console.WriteLine("Press any key to continue");
Console.ReadLine();
}
Output is :
The difference between “String.IsNullOrEmpty” and “check for null then for lenght” is minimal, so prefer the String.IsNullOrEmpty() wich is more readable.
As you can guess, IsNullOrEmpty performs a check for null, then a check for lenght :
If you use Reflector to inspect the String class in the mscorlib, you can see that String.IsNullOrEmpty do the same thing we do in our test :
public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}
the “extra” time comes from the method call
Note : In .Net Framework 4.0: string.IsNullOrWhiteSpace() method appears, but I've not tested yet (link)
Use the Stopwatch object !
using System.Diagnostics;
// ...
Stopwatch myStopWatch = Stopwatch.StartNew();
// some code
myStopWatch.Stop();
Console.WriteLine("{0} ms - {1} ticks", myStopWatch.Elapsed.TotalMilliseconds, myStopWatch.ElapsedTicks);
// ...