在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样?
在 C# 中,通常有三种判断字符串是否为空的方法,下面分别探讨。
1、str.Length == 0
使用 str.Length == 0,在三种方法中效率是最高的,但容易产生异常。当字符串为空的时候就会产生异常,如
string str; 或者 string str = null;
if(str.Length == 0) //产生异常
此时,就会产生对象不能为空的异常。
如果事先初始化 str,如:
string str = "a-购物、商场打折";
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 = "a-购物、商场打折";
if (str == string.Empty)
{
}
if (string.IsNullOrEmpty(str))
{
}
通过执行比较,两种情况,string.IsNullOrEmpty(str) 都比 str == string.Empty 稍快。
当然,这种字符串为空的判断方法,在平常的编程过程中,效率差别是非常小,如果不是十分复杂的情况下,可以忽略。但尽量使用效率高的方法。