也谈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();

}

}

}

你可能感兴趣的:(String)