2012-06-25 40 views
2

可以說我有如果不需要繼續,表達式是否會中斷?

if (textbox.Text != null && textbox.Text.Length > someNum) 
{ 
    //some code 
} 

如果textbox.Text爲空,將它崩潰,因爲null.Length不工作或因爲運營商是& &將其第一個表達式後突破,而且也沒有繼續點?

+0

謝謝大家幫我澄清! –

+0

不會簡單地運行代碼給你答案? 如果您正在尋找'爲什麼?',那麼您的問題似乎也意識到了這一點...... –

回答

8

這被稱爲「短路評估」,而C#有它。所以是的,如果textbox.Text爲空,它將不評估表達式的第二部分。

查看http://msdn.microsoft.com/en-us/library/2a723cdk(v=VS.71).aspx瞭解詳情。

+0

+1正在輸入幾乎相同的答案和鏈接,只是打敗了我。 – Windle

+1

只需加上:條件&運算符不使用短路(因此,無論第一個結果如何,都會評估兩個操作數)。這可能很有用,因爲第二次評估可能會影響應用程序的狀態。 – davenewza

0

第一個表達式被發現是錯誤的,它會中斷。這被稱爲短路(Short Circuiting),它對許多現代語言(如C#和Java)都很常見。

這就是爲什麼在檢查另一個依賴於對象不是null的條件之前檢查null通常是一個好主意首先。

0

是的。不過,我仍然會將該行分解爲檢查Null:返回或拋出異常。它使代碼更清晰。

相關問題