可能な重複:
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