比較演算子は、2 つの式を比較し、その値のリレーションシップを表す Boolean
値を返します。 数値を比較するための演算子、文字列を比較する演算子、およびオブジェクトを比較するための演算子があります。 ここでは、3 種類の演算子についてすべて説明します。
数値の比較
Visual Basic では、6 つの数値比較演算子を使用して数値を比較します。 各演算子は、数値に評価される 2 つの式をオペランドとして受け取ります。 次の表に、演算子の一覧を示し、それぞれの例を示します。
オペレーター | テスト済みの条件 | 例示 |
---|---|---|
= (等値) |
最初の式の値は、2 番目の式の値と等しいか。 |
23
=
33 ' False
23
=
23 ' True
23
=
12 ' False
|
<> (不等値) |
最初の式の値が 2 番目の式の値と等しくないか。 |
23
<>
33 ' True
23
<>
23 ' False
23
<>
12 ' True
|
< (より小さい) |
最初の式の値が 2 番目の式の値より小さいか。 |
23
<
33 ' True
23
<
23 ' False
23
<
12 ' False
|
> (より大きい) |
最初の式の値が 2 番目の式の値より大きいか。 |
23
>
33 ' False
23
>
23 ' False
23
>
12 ' True
|
<= (以下) |
最初の式の値が 2 番目の式の値以下ですか? |
23
<=
33 ' True
23
<=
23 ' True
23
<=
12 ' False
|
>= (以上) |
最初の式の値が 2 番目の式の値以上ですか? |
23
>=
33 ' False
23
>=
23 ' True
23
>=
12 ' True
|
文字列の比較
Visual Basic では、 Like 演算子 と数値比較演算子を使用して文字列を比較します。
Like
演算子を使用すると、パターンを指定できます。 その後、文字列がパターンと比較され、一致する場合、結果は True
。 それ以外の場合、結果は False
です。 数値演算子を使用すると、次の例に示すように、並べ替え順序に基づいて String
値を比較できます。
"73" < "9"
' The result of the preceding comparison is True.
前の例の結果は、最初の文字列の最初の文字が 2 番目の文字列の最初の文字の前に並べ替えられるため、 True
されます。 最初の文字が等しい場合、比較は両方の文字列の次の文字に進みます。 次の例に示すように、等値演算子を使用して文字列の等価性をテストすることもできます。
"734" = "734"
' The result of the preceding comparison is True.
ある文字列が "aa" や "aaa" などの別の文字列のプレフィックスである場合、長い文字列は短い文字列よりも大きいと見なされます。 次に例を示します。
"aaa" > "aa"
' The result of the preceding comparison is True.
並べ替え順序は、 Option Compare
の設定に応じて、バイナリ比較またはテキスト比較に基づいています。 詳細については、 Option Compare ステートメントを参照してください。
オブジェクトの比較
Visual Basic では、2 つのオブジェクト参照変数を Is 演算子 と IsNot 演算子と比較します。 これらの演算子のいずれかを使用して、2 つの参照変数が同じオブジェクト インスタンスを参照しているかどうかを判断できます。 次に例を示します。
Dim x As testClass
Dim y As New testClass()
x = y
If x Is y Then
' Insert code to run if x and y point to the same instance.
End If
前の例では、両方の変数が同じインスタンスを参照しているため、 x Is y
は True
に評価されます。 この結果を次の例と比較します。
Dim x As New customer()
Dim y As New customer()
If x Is y Then
' Insert code to run if x and y point to the same instance.
End If
前の例では、変数は同じ型のオブジェクトを参照しているが、その型の異なるインスタンスを参照するため、 x Is y
は False
に評価されます。
同じインスタンスを指していない 2 つのオブジェクトをテストする場合、 IsNot
演算子を使用すると、 Not
と Is
の文法的に不器用な組み合わせを回避できます。 次に例を示します。
Dim a As New classA()
Dim b As New classB()
If a IsNot b Then
' Insert code to run if a and b point to different instances.
End If
前の例では、 If a IsNot b
は If Not a Is b
と同じです。
オブジェクトの種類の比較
オブジェクトが特定の型であるかどうかをテストするには、 TypeOf
...Is
式を使用します。 構文は次のとおりです。
TypeOf <objectexpression> Is <typename>
typename
がインターフェイス型を指定すると、オブジェクトがインターフェイス型を実装している場合、TypeOf
...Is
式はTrue
を返します。
typename
がクラス型の場合、オブジェクトが指定したクラスのインスタンスであるか、指定したクラスから派生したクラスのインスタンスである場合、式はTrue
を返します。 次に例を示します。
Dim x As System.Windows.Forms.Button
x = New System.Windows.Forms.Button()
If TypeOf x Is System.Windows.Forms.Control Then
' Insert code to run if x is of type System.Windows.Forms.Control.
End If
前の例では、x
の型がButton
であり、Control
から継承されるため、TypeOf x Is Control
式はTrue
に評価されます。
詳細については、「 TypeOf 演算子」を参照してください。
こちらも参照ください
.NET