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); // ...