DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

And、Orですべてを評価しないようにする

たとえば次のようなコードでは「質問1」のメッセージボックスで「いいえ」を選んだとしても「質問2」が表示されてしまいます。これはAnd演算の1番目のオペランドがFalseに評価された場合でも2番目のオペランドが実行されるからです。

VB.NET
コードを隠すコードを選択
If (MsgBox("質問1", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) _
        And (MsgBox("質問2", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then
    MsgBox("両方Yesです。")
End If

しかし次のようにAndの代わりにAndAlsoを使えば、「質問1」で「いいえ」を選んだときに「質問2」が表示されることがなくなります。AndAlso演算は1番目のオペランドがFalseに評価されるとすぐにFalseを返すためです。

VB.NET
コードを隠すコードを選択
If (MsgBox("質問1", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) _
        AndAlso (MsgBox("質問2", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then
    MsgBox("両方Yesです。")
End If

Orにおいて同様のことを行うには、Orの代わりにOrElseを使います。次の例では、「質問1」で「Yes」がクリックされるとすぐに「Yesがクリックされました。」と表示され、「No」がクリックされた時のみ「質問2」が表示されます。

VB.NET
コードを隠すコードを選択
If (MsgBox("質問1", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) _
        OrElse (MsgBox("質問2", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then
    MsgBox("Yesがクリックされました。")
End If

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。