在程序開發過程中,少不了要處理字符串,並且常常要判斷字符串是否為空,通常有哪些判斷方法,以及不同方法的效率又怎么樣?
在 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 稍快。
當然,這種字符串為空的判斷方法,在平常的編程過程中,效率差別是非常小,如果不是十分復雜的情況下,可以忽略。但盡量使用效率高的方法。