目次
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行目のようになります。
関連の記事