2013-07-09 35 views
5

我在VB.net中有一個聲明,我認爲我正確寫入以防止後半部分被評估。它看起來像這樣:當前半部分爲空時防止if語句的後半部分

如果((myDataSet2 IsNot運算沒有)或者myDataSet2.Tables( 「CurData」)Rows.Count> 0)

然而,它沒有跳過第二expresion「myDataSet2 .Tables(「CurData」).Rows.Count> 0「就像我想要的那樣。

我應該改變什麼?

+0

我說在我的答案中使用OrElse,但你可能想做一個短路邏輯AND,對不對?在這種情況下,請使用AndAlso。 我問,因爲檢查數據集是否不是很重要,那麼如果這是錯誤的(意味着你的數據集是什麼),檢查不存在的數據集的一些屬性。你會得到一個空引用的方式。 –

+0

是的,你是對的,我真正想要做的是'AndAlso'! –

回答

8

使用OrElse運算符。

If myDataSet2 IsNot Nothing OrElse myDataSet2.Tables("CurData").Rows.Count > 0 

編輯:請參閱我對您的原始問題的評論。您正在尋找:

If myDataSet2 IsNot Nothing AndAlso myDataSet2.Tables("CurData").Rows.Count > 0 

這將檢查myDataSet2是否不爲空。假設它不是,它會檢查是否至少有一行。如果它爲空,則不檢查第二個條件。

4

您需要將第二條語句放入第一個if-子句中。

像這樣:

If(statement1) then 
    If(statemtent2) then 
    Else 
    End if 
Else 
End If 

因爲它是現在都被評估,如果其中一人是真正的你,如果子句中的內容將被執行。

相關問題