VB.NET If文 条件分岐を行うサンプル

VB.NETのIf文のサンプルです。条件で処理を分岐する時に使用します。

目次

If文 If文とは / If文のサンプル / String型の値の比較 / ネスト構造 if文の中にif文
  値の一部で比較する(like演算子) / null(nothing)を比較
  三項演算子 / 比較演算子
論理演算子 論理積(And) AかつB / 論理和(Or) AまたはB / 論理否定(Not) Aではない
  排他的論理和(Xor)

If文とは

If 条件式 Then
    処理
End If
' ElseIfとElseを書く場合
If 条件式 Then
    処理
ElseIf 条件式 Then 
    処理
Else 
  処理
End If
  • 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
  • 条件が合致することをtrue(真)ともいいます。
  • 条件が合致しないことをfalse(偽)ともいいます。
  • 条件が合致しない場合、配下の処理は実行されず、その下(ElseIf/Else/if文終了)に進みます。
  • ElseIfは、複数記述できます。省略可です。
  • Elseの処理は、どの条件も合致しなかったときに実行されます。Elseは1つのみ記述できます。省略可能です。

If文のサンプル

Module Module1
    Sub Main()
        Dim a As Integer = 1

        If a = 0 Then
            Console.WriteLine("0")

        ElseIf a = 1 Then
            Console.WriteLine("1") '1が表示される 

        Else
            Console.WriteLine("other")

        End If
    End Sub
End Module

5行目からif文が始まります。
8行目のElseIf(if文)はtrueになるのでその配下の処理が実行されます。
9行目の処理が実行されif文を抜けます。

String型の値の比較

Public Shared Operator =(a As [String], b As [String]) As Boolean

string型の値の比較は、==で可能です。

Module Module1
	Sub Main()
		Dim a As String = "test"
		Dim b As String = "test"

		If a = b Then
			Console.WriteLine("true") 'trueが出力される
		End If

	End Sub
End Module

String型の値を比較するときも比較演算子の=で可能です。
Stringクラスにメソッドがあります。
https://docs.microsoft.com/ja-jp/dotnet/api/system.string.op_equality?view=netcore-3.1

ネスト構造 if文の中にif文

Module Module1
    Sub Main()
        Dim a As Integer = 1
        Dim b As Integer = 1

        If a = 1 Then
            If b = 1 Then
                Console.WriteLine("1") ' 1が出力される
            End If
        End If

    End Sub
End Module

7行目は、if文の中にif文を記述しています。ネストの構造です。入れ子ともいいます。
6,7行目は、trueになり文字列が表示されます。

値の一部で比較する(like演算子)

like演算子とアスタリスク(*)で、前方一致、部分一致、後方一致の比較ができます。

Module Module1
	Sub Main()
		Dim str1 As String
		str1 = "みかん"

		If str1 Like "み*" Then
			Console.WriteLine("OK") 'OKが表示される
		End If

		If str1 Like "み*ん" Then
			Console.WriteLine("OK") 'OKが表示される
		End If

		If str1 Like "*かん" Then
			Console.WriteLine("OK") 'OKが表示される
		End If

		If str1 Like "みかん*" Then
			Console.WriteLine("OK") 'OKが表示される
		End If
	End Sub
End Module

アスタリスク(*)は、0以上の任意の文字を表します。

null(nothing)を比較

Module Module1
    Sub Main()
        Dim a As String = Nothing

        If a Is Nothing = True Then
            Console.Write("true") ' trueが出力される
        End If

        If IsNothing(a) Then
            Console.Write("true") ' trueが出力される
        End If

        If a IsNot Nothing = True Then
            Console.Write("true3") '出力されない
        End If

        If String.IsNullOrEmpty(a) Then
            Console.Write("true") ' trueが出力される
        End If
    End Sub
End Module

13行目は、Nothingの否定です。IsNotを使用します。
17行目のIsNullOrEmptyは、nullと空文字のときにtrueになります。

以下は、MicrosoftのNot演算子のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/not-operator

三項演算子

変数 = if(条件式, 値1, 値2)
  • 条件式がtrueのとき、値1を返します。
  • 条件式がfalseのとき、値2を返します。
Module Module1
	Sub Main()
		Dim a As Integer = 1
		Dim b As String

		b = If(a = 0, "true", "false")
		Console.WriteLine(b) ' falseが表示される

		If a = 0 Then
			Console.WriteLine("true")
		Else
			Console.WriteLine("false") 'falseが表示される
		End If
	End Sub
End Module

6行目は、三項演算子です。
6,7行目をif文で書くと、9~13行目のようになります。

 

比較演算子

比較演算子は、2つの値を比べて条件を満たしていればtrue,そうでない場合はfalseを返します。

等しくないとする場合は、<>とします。

比較演算子 説明
a = b aとbの値は等しい
a <> b aとbの値は等しくない
a > b aはbより大きい
a >= b aはbより大きい または 等しい
a < b aはbより小さい
a <= b aはbより小さい または 等しい

以下は、Microsoftの比較演算子 (Visual Basic)のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/comparison-operators

 

論理積(And) AかつB

If  左の条件式 And 右の条件式 Then
If  左の条件式 AndAlso 右の条件式 Then
  • 論理演算子のAndとAndAlsoは、左の式と右の式が両方ともtrueの場合、trueになります。それ以外はfalseです。
  • AndAlsoは、左の式がfalseの場合、右の式は判定(評価)されません。これを短絡評価(ショートサーキット評価 : Short-Circuit Evaluation)といいます。パフォーマンスの向上を図れます。
Module Module1
    Sub Main()
        Dim a As Integer = 1
        Dim b As Integer = 1

        If a = 1 And b = 1 Then
            Console.WriteLine("True") 'Trueが出力される
        Else
            Console.WriteLine("False")
        End If

        If a = 1 AndAlso b = 1 Then
            Console.WriteLine("True") 'Trueが出力される
        Else
            Console.WriteLine("False")
        End If
    End Sub
End Module

6,12行目は、左の式と右の式が共にtrueなので、trueになります。
12行目は、左の式がfalseの場合、右の式は判定されません。

論理和(Or) AまたはB

If  左の条件式 Or 右の条件式 Then
If  左の条件式 OrElse 右の条件式 Then
  • 論理演算子のOrとOrElseは、左の式または右の式のどちらかがtrueの場合、trueになります。
  • OrElseは、左の式がtrueの場合、右の式は判定(評価)されません。これを短絡評価(ショートサーキット評価 : Short-Circuit Evaluation)といいます。パフォーマンスの向上を図れます。
Module Module1
    Sub Main()
        Dim a As Integer = 1
        Dim b As Integer = 2

        If a = 2 Or b = 2 Then
            Console.WriteLine("True") 'Trueが出力される
        Else
            Console.WriteLine("False")
        End If

        If a = 2 OrElse b = 2 Then
            Console.WriteLine("True") 'Trueが出力される
        Else
            Console.WriteLine("False")
        End If
    End Sub
End Module

6,12行目は、左の式はfalseですが右の式がtrueなのでtrueになります。
12行目は、左の式がtrueの場合、右の式は判定されません。

排他的論理和(Xor)

If  左の条件式 Xor 右の条件式 Then
  • 左の式がtrueで右の式がfalseの場合、trueになります。
  • 左の式がfalseで右の式がtrueの場合、trueになります。
  • 左の式と右の式が両方ともtrueの場合、falseになります。
  • 左の式と右の式が両方ともfalseの場合、falseになります。
Module Module1
    Sub Main()
        Dim a As Integer = 2
        Dim b As Integer = 2

        If a = 2 Xor b = 3 Then
            Console.WriteLine("True") 'Trueが出力される
        Else
            Console.WriteLine("False")
        End If

        If a = 3 Xor b = 2 Then
            Console.WriteLine("True") 'Trueが出力される
        Else
            Console.WriteLine("False")
        End If

        If a = 2 Xor b = 2 Then
            Console.WriteLine("True")
        Else
            Console.WriteLine("False") 'Falseが出力される
        End If

        If a = 3 Xor b = 3 Then
            Console.WriteLine("True")
        Else
            Console.WriteLine("False") 'Falseが出力される
        End If
    End Sub
End Module

6行目は、左の式がtrueで右の式がfalseなので、trueになります。
12行目は、左の式がfalseで右の式がtrueなので、trueになります。
18行目は、左の式と右の式が両方ともtrueなので、falseになります。
24行目は、左の式と右の式が両方ともfalseなので、falseになります。

論理否定(Not) Aではない

If  Not (条件式)  Then 
  • 条件式がfalseの場合にtrueになります。
  • 条件式がtrueの場合にfalseになります。
Module Module1
	Sub Main()
		Dim a As Integer = 1

		If Not (a = 2) Then
			Console.WriteLine("True") 'Trueが出力される
		End If

		If Not (a = 1) Then
			Console.WriteLine("True")
		Else
			Console.WriteLine("False") 'Falseが出力される
		End If

		If a <> 2 Then
			Console.WriteLine("True") 'Trueが出力される
		End If
	End Sub
End Module

5行目は値の比較でfalseになり、それを否定するのでtrueになります。
9行目は値の比較でtrueになり、それを否定するのでfalseになります。
15行目の<>でも否定になります。

以下は、Microsoftの論理演算子のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/operators-and-expressions/logical-and-bitwise-operators

関連の記事

(ASP.NETとVB.NET) MVCでhello worldを表示する

△上に戻る