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

目次

If文のみ (trueのとき処理する)

条件がtrueの時のみ処理します。falseでは処理しません。

If 条件 Then
    処理
End If

コード

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

		If a = 3 Then
			Console.WriteLine("ok1") 'ok1が表示される
		End If
		If a <> 1 Then
			Console.WriteLine("ok2") 'ok2が表示される
		End If
		If a > 2 Then
			Console.WriteLine("ok3") 'ok3が表示される
		End If
		If a >= 3 Then
			Console.WriteLine("ok4") 'ok4が表示される
		End If
		If a < 5 Then
			Console.WriteLine("ok5") 'ok5が表示される
		End If
		If a <= 3 Then
			Console.WriteLine("ok6") 'ok6が表示される
		End If
	End Sub
End Module

point

  • 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
  • 条件が合致することをtrue(真)ともいいます。
  • 条件が合致しないことをfalse(偽)ともいいます。
  • 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
  • 条件が合致しない場合、配下の処理は実行されず、if文の処理は終了します。
  • 条件の判定で使用している=等は比較演算子です。

 

IfとElse (trueとfalseそれぞれ処理する)

条件がtrueの時は、trueの処理をします。falseの時は、falseの処理をします。

If 条件 Then
    処理1
Else
    処理2
End If

コード

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

		If a = 1 Then
			Console.WriteLine("test1")
		Else
			Console.WriteLine("test2") 'test2が表示される
		End If
	End Sub
End Module

Elseは、1つのみ記述できます、または省略可能です。

 

IfとElseIfとElse (複数の条件で処理を分ける)

If 条件1 Then
    処理1
ElseIf 条件2 Then 
    処理2
Else 
  処理3
End If

コード

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

		If a = 1 Then
			Console.WriteLine("test1")
		ElseIf a = 2 Then
			Console.WriteLine("test2") 'test2が表示される
		Else
			Console.WriteLine("test3")
		End If
	End Sub
End Module

・ElseIfは、1つ以上記述できます。
・Elseは、1つのみ記述できます、または省略可能です。
・ElseIfが多くなるときはSelect case文の使用を検討します。

 

if文の中にif文

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になり文字列が表示されます。

 

比較演算子

比較演算子は、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/AndAlso) AかつB

If  左の条件式 And 右の条件式 Then
If  左の条件式 AndAlso 右の条件式 Then

左の式と右の式が両方ともtrueの場合、trueになります。それ以外はfalseです。

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の場合、右の式は判定されません。

詳細

AndAlsoは、左の式がfalseの場合、右の式は判定(評価)されません。これを短絡評価(ショートサーキット評価 : Short-Circuit Evaluation)といいます。パフォーマンスの向上を図れます。

 

論理和(Or/OrElse) AまたはB

If  左の条件式 Or 右の条件式 Then
If  左の条件式 OrElse 右の条件式 Then

左の式または右の式のどちらかがtrueの場合、trueになります。

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の場合、右の式は判定されません。

詳細

OrElseは、左の式がtrueの場合、右の式は判定(評価)されません。これを短絡評価(ショートサーキット評価 : Short-Circuit Evaluation)といいます。パフォーマンスの向上を図れます。

 

論理否定(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

 

排他的論理和(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になります。

 

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

 

値の一部で比較する(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行目のようになります。

関連の記事

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

△上に戻る