/ / VB6の複雑なIF THENステートメント[複製]-vb6

VB6の複雑なIF THENステートメント[複製]-vb6

可能な重複:
VB6は複雑な条件を短絡しますか?

VB6でIFステートメントがどのように実行されるかについて興味があります。 たとえば、私が声明を持っている場合

If x And y Then
"execute some code
End If

コードは次の場合に移動しますか x 真実ではない?それとも先に進んで評価しますか y 論理的なポイントはありませんが?

もう一つの例

If x Or y Then
"execute some code
End If

コードは継続して評価されますか y if x 本当ですか?

編集: ネストを回避する方法はありますか IF 非常に複雑な条件を評価したいが、CPU時間を無駄にしたくない場合のステートメント

回答:

回答№1の場合は3

短絡動作を示す扱いにくいor-likeステートメント:

select case True
case a(), b(), c()
"//if a returns true b & c are not invoked, if b returns true a & b were invoked
case else
...

回答№2については4

あなたが説明しているのは短絡論理であり、VB6にはそれがありません...

たとえば、VB.Netでは次のように記述できます。

If x AndAlso y then...

この場合 y 次の場合はテストされません x 偽であることが判明。

VB6の例では、「 Object or With block variable not set 次のようなことをしようとするとエラーになります:

Dim x as Object
If Not x Is Nothing And x.y=1 Then

オブジェクトxはインスタンス化されていないため。


答え№3の2

編集に答えるために、ネストされたIFステートメントを回避するには、Select Caseを使用できます。 この記事.

記事のコードスニペット:

Select Case strShiftCode
Case "1"
sngShiftRate = sngHourlyRate
Case "2"
sngShiftRate = sngHourlyRate * 1.1
Case "3"
sngShiftRate = sngHourlyRate * 1.5
Case Else
Print "Shift Code Error"
End Select