VB.NETのIf文のサンプルです。条件で処理を分岐する時に使用します。
目次
If文 | If文 |
String型の値の比較 | |
ネストのサンプル (if文の中にif文) | |
演算子 | 比較演算子 |
論理演算子の論理積(And) AかつB | |
論理演算子の論理和(Or) AまたはB | |
論理演算子の排他的論理和(Xor) | |
論理否定(Not) Aではない | |
null | null(nothing)との比較 |
If文
If 条件式 Then 処理 End If |
' ElseIfとElseを書く場合 If 条件式 Then 処理 ElseIf 条件式 Then 処理 Else 処理 End If |
- 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
- 条件が合致することをtrue(真)ともいいます。
- 条件が合致しない場合、配下の処理は実行されず、その下(ElseIf/Else)に進みます。
- 条件が合致しないことをfalse(偽)ともいいます。
- ElseIfは、複数記述できます。省略可です。
- Elseは、1つのみ記述できます。省略可能です。elseの処理は、どの条件も合致しなかったときに実行されます。
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("それ以外です")
End If
End Sub
End Module
3行目は、変数の宣言と値をセットしています。
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("1") ' 1が出力される
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になり文字列が表示されます。
比較演算子
上記コードの=は比較演算子です。
比較演算子は、2つの値を比べて真偽値(true/false)を返します。
条件を満たしていれば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行目の<>でも否定になります。
null(nothing)との比較
null(nothing)との比較のサンプルです。
Module Module1
Sub Main()
Dim a As String = Nothing
If a Is Nothing = True Then
Console.Write("1") ' 1が出力される
End If
If IsNothing(a) Then
Console.Write("2") ' 2が出力される
End If
If a IsNot Nothing = True Then
Console.Write("3") '出力されない
End If
If String.IsNullOrEmpty(a) Then
Console.Write("4") ' 4が出力される
End If
End Sub
End Module
5行目は、Is Nothingでnullを比較しています。
9行目は、IsNothingでnullを比較しています。
13行目は、Nothingの否定です。IsNotを使用します。
17行目は、IsNullOrEmptyで比較しています。nullと空文字のときにtrueになります。
以下は、Microsoftの論理演算子のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/operators-and-expressions/logical-and-bitwise-operators
以下は、MicrosoftのNot演算子のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/not-operator
関連の記事