有時,必須檢查一個值是否與常量相等。在這種情況下,我總是看到這樣的代碼:爲什麼在比較一個值和一個常量之前檢查null?
if (!string.IsNullOrEmpty(text))
{
if (text == "Some text here")¹
{
// Do something here.
}
}
在我而言,我寧願寫:
if ("Some text here".Equals(text))
{
// Do something here.
}
畢竟,如果text
是null
,Equals
將返回false
,這是預期的。一個常數和一個變量的倒置感覺很奇怪,但對於初學者來說,這仍然是可以理解的,並且避免了,它將與text.Equals("Some text here")
一起拋出。
我錯過了什麼嗎?
爲什麼我見過的所有源代碼都使用第一個示例中的語法,而從第二個示例中卻不使用?
¹在真正的代碼,它寧願是一個常量或只讀字段。爲了縮短這些例子,我把這些字符串放在一行中。
我能想象它從Java世界裏==弦上對檢查中碼文字返回false(由於對象引用檢查)到來,但在C#如果你只是檢查,你可以做==相等因爲運算符重載處理null情況就好了。你的第一個例子似乎完全不必要只是(「這裏的一些文字」文本==)做''如果你 –
可能也有興趣在這個問題上; http://stackoverflow.com/questions/44288/differences-in-string-compare-methods-in-c-sharp – dash