2012-09-03 130 views
0

我是VB.NET新手,但對於C,C++,C#和其他語言,我有一些經驗。這個問題對我來說很奇怪,因爲我以前從未遇到過。VB.NET邏輯順序if語句

我有這行代碼:

If obj is Nothing Or obj.IsDisposed Then 
'do some stuffs 
End If 

這行代碼時obj是什麼都不會顯示一個錯誤,因爲obj.IsDisposed不存在(無柄它)。正如我所知,Or的第一個語句返回True,所以If語句的結果將是True。

誰能給我一個指令如何擺脫這種(或我必須寫If..Then..Else If..End如果)

回答

2

嘗試OrElse運算時,obj.Disposed不會被評估當「obj是沒有什麼」是真的

If obj is Nothing OrElse obj.IsDisposed Then 
'do some stuffs 
End If 
+0

非常感謝。它完美的工作! –

1

您可以使用它OrElse Operator將繞過第二次評估,如果第一個是真實的。

從以上鍊接:

邏輯操作被認爲是短路如果經編譯的代碼可根據另一個表達式的結果繞過一個表達式的求值。如果評估的第一個表達式的結果確定了操作的最終結果,則不需要評估第二個表達式,因爲它不能更改最終結果。如果繞過的表達式很複雜,或者涉及過程調用,則短路可以提高性能。

0

OrElse是你所需要的。它只會在第一次評價,只要評價,因爲它已經是true

If obj is Nothing OrElse obj.IsDisposed Then 
    'do some stuffs 
End If