DOBON.NET

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をご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。