說,你有這樣的:如果您使用和/或(||/&&),.net會停止檢查IF語句的其餘部分嗎?
INT NUM = 0
然後你做
if(num > 5 || num < 4)
{
...
}
它會檢查,但如果你做
if(num < 4 || num > 5)
{
...
}
它只是檢查第一個聲明? 一樣:
if(num > 5 && num == 0)
{
...
}
應該在失敗1日以後停止,是嗎?
說,你有這樣的:如果您使用和/或(||/&&),.net會停止檢查IF語句的其餘部分嗎?
INT NUM = 0
然後你做
if(num > 5 || num < 4)
{
...
}
它會檢查,但如果你做
if(num < 4 || num > 5)
{
...
}
它只是檢查第一個聲明? 一樣:
if(num > 5 && num == 0)
{
...
}
應該在失敗1日以後停止,是嗎?
如果你做得對,是的。看看這裏:http://devpinoy.org/blogs/nocampo/archive/2007/09/28/short-circuit-evaluation-in-c-and-vb-net.aspx
編輯:澄清; C#是的,VB.NET如果你使用正確的關鍵字。
是的,這個功能被稱爲短路評估。如果AND運算符(&&
)的第一個參數爲false,則整個表達式將爲false。與OR類似(||
)如果第一個操作數爲真,則整個事情都是真的。
if(a != null && a.isValid())
... Code ...
這樣,你是不會得到一個異常,如果a
爲null:如果你想寫類似代碼
此功能非常有用。
MSDN文檔http://msdn.microsoft.com/en-us/library/2a723cdk%28v=vs.71%29.aspx
很好的例子,關於先不用擔心空引用的問題。 – alexD
你的意思是C#和VB.NET有(和其他編程語言也一樣),.NET並沒有任何在這個問題上說了。 –
+1但我想補充說:這條規則的例外是And和Or在VB中。要短路,請改用AndAlso/OrElse。 – Keith
感謝@Lasse,我經常不常訪問.NET世界。 –