Запретить вторую половину оператора if, если первая половина имеет значение null

У меня есть заявление в VB.net, которое, как я думал, я написал правильно, чтобы предотвратить оценку второй половины. Это выглядит так:

Если ((myDataSet2 IsNot Nothing) или myDataSet2.Tables("CurData").Rows.Count > 0)

Однако он не пропускает второе выражение "myDataSet2.Tables("CurData").Rows.Count > 0", как я этого хочу.

Что мне следует изменить?


person George Mikan    schedule 09.07.2013    source источник
comment
Я сказал использовать OrElse в своем ответе, но вы, вероятно, хотите сделать короткое логическое И, верно? В этом случае используйте AndAlso. Я спрашиваю, потому что не имеет большого смысла проверять, не является ли ваш набор данных ничем, а если это неверно (то есть ваш набор данных — ничто), проверять какое-то свойство несуществующего набора данных. Таким образом вы получите нулевую ссылку.   -  person Douglas Barbin    schedule 09.07.2013
comment
Да, вы правы, я действительно хочу сделать AndAlso!   -  person George Mikan    schedule 09.07.2013


Ответы (2)


Используйте оператор OrElse.

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

РЕДАКТИРОВАТЬ: см. мой комментарий к вашему первоначальному вопросу. ВЫ, ВОЗМОЖНО, ищете:

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

Это проверит, не является ли myDataSet2 нулевым. Предполагая, что это не так, он проверит наличие хотя бы одной строки. Если оно равно null, то второе условие проверяться не будет.

person Douglas Barbin    schedule 09.07.2013

Вам нужно поместить второе утверждение в первое предложение if.

Как это:

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

Как и сейчас, оба оцениваются, и если одно из них истинно, содержимое вашего предложения if будет выполнено.

person user2425234    schedule 09.07.2013