【转载】也谈String.IsNullOrEmpty

转载自http://www.cnblogs.com/yangjie5188/archive/2008/02/21/1076767.html

今天在浏览DevTopics的博客时,发现一篇介绍String的随笔,介绍的是判断一个String变量是否为空时,String的一个方法和一个属性之间的比较,给一个 string变量 's', 下面那个表达式更快?

1. String.IsNullOrEmpty( s )
2. s == null || s.Length == 0

如果你猜第二个,那么你是对的. 它将比String.IsNullOrEmpty方法快15%,但这种也是以百万分之一秒来衡量的!
这里有一个简单的例子来比较2种方式:

 

using System;
  
namespace StringNullEmpty
{
class Program
{
static void Main( string[] args )
{
long loop = 100000000;
string s = null;
long option = 0;
long empties1 = 0;
long empties2 = 0;
  
 DateTime time1 = DateTime.Now;
  
for (long i = 0; i < loop; i++)
{
 option = i % 4;
switch (option)
{
case 0:
 s = null;
break;
case 1:
 s = String.Empty;
break;
case 2:
 s = "H";
break;
case 3:
 s = "HI";
break;
}
if (String.IsNullOrEmpty( s ))
 empties1++;
}
  
 DateTime time2 = DateTime.Now;
  
for (long i = 0; i < loop; i++)
{
 option = i % 4;
switch (option)
{
case 0:
 s = null;
break;
case 1:
 s = String.Empty;
break;
case 2:
 s = "H";
break;
case 3:
 s = "HI";
break;
}
if (s == null || s.Length == 0)
 empties2++;
}
  
 DateTime time3 = DateTime.Now;
  
 TimeSpan span1 = time2.Subtract( time1 );
 TimeSpan span2 = time3.Subtract( time2 );
 Console.WriteLine( "(String.IsNullOrEmpty( s )): Time={0} Empties={1}",
 span1, empties1 );
 Console.WriteLine( "(s == null || s.Length == 0): Time={0} Empties={1}",
 span2, empties2 );
 Console.ReadLine();
}
}
}

posted @ 2010-12-17 21:21  羽落无声  阅读(796)  评论(1编辑  收藏  举报