2011-02-16 68 views
1

代碼下面:問題AND條件

if(var != "" && var.startswith("somestring")) 
{ do something } 

此代碼是令人不安;至於我的理解var!=「」將先評估,然後如果是真的,那麼其他部分將被評估,但這個概念似乎不工作:)

如果var有一個值null,那麼我得到「nullreferrence」例外;這意味着 var!= null沒有得到評估。

請幫忙。

感謝, 拉胡爾

+2

你比較VAR爲「」,而不是空 – Rob 2011-02-16 22:29:00

回答

4

在C#中,空字符串和空字符串之間存在差異。您必須檢查所有3種情況,實際上,C#僅包含此情況的輔助方法:

if(!string.IsNullOrEmpty(var) && var.StartsWith("somestring")) 
{ 
    // do something 
} 
3

我認爲你的意思null而不是""

if (var != null && var.startswith("somestring")) 
{ do something } 

P.S:var是在C#更高版本保留關鍵字。

+0

呀,我想空管檢查甚至沒有必要 – LorenVS 2011-02-16 22:29:34

+1

`var`實際上是一個*上下文*關鍵詞;在C#3/4中執行`int var = 0;`是合法的。 – Ani 2011-02-16 22:38:31

+0

@Ani:哦,完全忘了;謝謝! – Mehrdad 2011-02-16 22:39:10

0

var!=「」與var!= null不同。

0

「」是一個有效string - 它只是恰巧有長度爲0,但它不是null!要檢查null,請寫var != null

0

如果有可能你的變量爲空,你需要在你試圖做任何類型的處理(即使是簡單的比較)之前檢查它是否爲null,否則你會得到這個「nullreference」例外。

if(var != null){ 
//gitter done 
}