次の方法で共有


Visual Basic の比較演算子

比較演算子は、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 yTrueに評価されます。 この結果を次の例と比較します。

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 yFalseに評価されます。

同じインスタンスを指していない 2 つのオブジェクトをテストする場合、 IsNot 演算子を使用すると、 NotIsの文法的に不器用な組み合わせを回避できます。 次に例を示します。

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 bIf 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 演算子」を参照してください。

こちらも参照ください