3

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

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

If x And y Then
    'execute some code
End If

xtrue でない場合、コードは続行しますか? yそれとも、論理的なポイントがなくても、先に進んで評価しますか?

もう一つの例

If x Or y Then
    'execute some code
End If

コードは続行し、true かどうかyを評価しますか?x

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

4

3 に答える 3

4

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

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

If x AndAlso y then...

この場合、 false であることが判明した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 はインスタンス化されていないため。

于 2012-10-15T15:16:41.060 に答える
3

ショート サーキット動作を示す扱いにくい、または類似のステートメント:

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
      ...
于 2012-10-15T15:46:16.407 に答える
2

編集に答えるには、ネストされたIFステートメントを避けて、この記事の後半で説明するSelectCaseを使用できます。

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

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
于 2012-10-15T15:40:40.010 に答える