程序开发 > C# > 正文

C# 判断字符串为空的3种方法及效率

亮术网 2020-07-19 本网原创

在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样?

在 C# 中,通常有三种判断字符串是否为空的方法,下面分别探讨。

 

1、str.Length == 0

使用 str.Length == 0,在三种方法中效率是最高的,但容易产生异常。当字符串为空的时候就会产生异常,如

string str; 或者 string str = null;

if(str.Length == 0) //产生异常

此时,就会产生对象不能为空的异常。

 

如果事先初始化 str,如:

string str = "C# 判断字符串为空";

if(str.Length == 0) //不产生异常

此时,则不会产生异常。因此,如果事先可以断定字符串在任何情况下都不为空,可以用此方法,从而提高效率;反之,不建议使用。

 

2、str == string.Empty 或 str == ""

这两种方法效率比 str.Length == 0 稍低一点,但字符为空时不会产生异常。所以,在事先不初始化变量,或不能断定变量在程序运行过程中一定不为空,可以使用此方法。

可能细心的你会问,str == string.Empty 和 str == "",哪个效率会更高一点?记得在《C# 多个字符串连接的效率》一文中具体探讨过,有兴趣可以看一看,不过在此可以先告诉你:str == string.Empty 略高一点

 

3、str == string.IsNullOrEmpty

Null 通常用来判断对象是否为空,所以这个方法既可以判断字符串(str)这个对象是否存在,也可以判断字符串为空(empty 或 "")。它与 str == string.Empty 比较,效率高低如何呢?举例如下:

1)字符串为空时

string str = null;
  if (str == string.Empty)
  {
  }

if (string.IsNullOrEmpty(str))
  {
  }

2)字符串不为空时

string str = "C# 判断字符串为空";
  if (str == string.Empty)
  {
  }

if (string.IsNullOrEmpty(str))
  {
  }

通过执行比较,两种情况,string.IsNullOrEmpty(str) 都比 str == string.Empty 稍快。

当然,这种字符串为空的判断方法,在平常的编程过程中,效率差别是非常小,如果不是十分复杂的情况下,可以忽略。但尽量使用效率高的方法。