2013-11-04 23 views
2

我最近從一位作者身上取得了一些代碼的所有權,這些代碼已不在公司。 整個代碼我發現這條線是否存在檢查字符串是否爲空的邊界情況?

if (string.Compare(string.Empty, textbox1.Text, true) == 0) 

我不是最先進的C#程序員,但對我來說,似乎功能上與

if (textbox1.Text == "") 

有沒有邊緣的情況下,該第一行會發現第二行不行?

+3

對於這種情況,不,您可以(也應該)使用第二種形式。此外,您沒有檢查空值,只檢查空字符串 –

回答

6

它是比較字符串忽略大小寫,但它是一個不好的方法。 String.Equals有重載比較字符串與忽略大小寫。

若要檢查字符串是否包含空字符串,應使用String.IsNullOrEmpty,如果您使用的是.Net framework 4.0或更高版本,並且您希望將空格視爲空字符串,則可以使用string.IsNullOrWhiteSpace

如果您只想將該值與空字符串進行比較,那麼textbox1.Text == ""textbox1.Text == string.Empty就足夠了。

+0

他的問題是 - 是否string.Empty,具體來說,不管是否檢查區分大小寫都會有不同的行爲。其中,我不知道*確信*它沒有,但我相信它沒有。 – neminem

+0

@neminem,是空字符串,不區分大小寫的比較沒有任何意義。我只想強調用'string.Compare'嘗試着什麼。 – Habib

+0

這個問題更專門針對string.Compare與其他檢查。我不知道爲什麼前面的人加入了不區分大小寫的位。 –

7

實際上,您應該使用String.IsNullOrEmpty(textbox1.Text)來代替。

正如評論中指出的那樣,String.IsNullOrWhitespace特別有用,因爲您正在使用GUI控件,GUI控件通常可能只包含空格,而實際上並不是「空」字符串。

+0

同時String.IsNullOrWhitespace(textbox1.Text)將處理充滿空格/製表符的時間。 – Matt

+0

您應該向OP指出他將空字符串與null混淆。 –