比較演算子 (Visual Basic)
次に示すのは、Visual Basic で定義されている比較演算子です。
<
演算子
<=
演算子
>
演算子
>=
演算子
=
演算子
<>
演算子
これらの演算子は、2 つの式を比較して、両者が等しいかどうかを判断します。等しくない場合は、両者がどのように異なるかを判断します。 Is
、IsNot
、Like
の詳細については、それぞれのヘルプ ページを参照してください。 このページでは、関係比較演算子について詳しく説明します。
構文
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
指定項目
result
必須です。 比較の結果を表す Boolean
値です。
expression1
、expression2
必須です。 任意の式。
comparisonoperator
必須です。 いずれかの関係比較演算子です。
object1
、object2
必須です。 いずれかの参照オブジェクト名です。
string
必須です。 任意のブール型 ( String
) の式を指定します。
pattern
必須です。 いずれかの String
式または文字の範囲です。
Remarks
次の表に、関係比較演算子と、result
が True
か False
かを決定する条件の一覧を示します。
演算子 | True : |
False : |
---|---|---|
< (より小さい) |
expression1 < expression2 |
expression1 >= expression2 |
<= (以下) |
expression1 <= expression2 |
expression1 > expression2 |
> (より大きい) |
expression1 > expression2 |
expression1 <= expression2 |
>= (以上) |
expression1 >= expression2 |
expression1 < expression2 |
= (等しい) |
expression1 = expression2 |
expression1 <> expression2 |
<> (等しくない) |
expression1 <> expression2 |
expression1 = expression2 |
注意
= 演算子は、代入演算子としても使用されます。
Is
演算子、IsNot
演算子、および Like
演算子には、前の表の演算子とは異なる特定の比較機能があります。
数値の比較
Single
型の式を Double
型のいずれかと比較すると、Single
式が Double
に変換されます。 この動作は Visual Basic 6 で見られる動作とは逆です。
同様に、Decimal
型の式を Single
型、または Double
型の式と比較すると、Decimal
式が Single
または Double
に変換されます。 Decimal
式の場合、1E-28 未満の小数値は失われる可能性があります。 このような小数値の損失によって、2 つの値が等しくない場合でも等しいと見なされることがあります。 このため、等値 (=
) を使用して 2 つの浮動小数点変数を比較する場合は注意が必要です。 2 つの数値の差の絶対値が許容範囲の最小値より小さいかどうかをテストする方が安全です。
浮動小数点おける誤差
浮動小数点数を操作する場合、それらがメモリ内で常に正確な表現が使用されているとは限らないことに注意してください。 これにより、値の比較や Mod 演算子などの特定の演算によって、予期しない結果につながる可能性があります。 詳細については、「データ型のトラブルシューティング」を参照してください。
文字列の比較
文字列を比較すると、文字列式はアルファベット順の並べ替え順序に基づいて評価されます。これは、Option Compare
の設定によって異なります。
Option Compare Binary
の文字列比較は、文字の内部バイナリ表現から派生した並べ替え順序に基づきます。 並べ替え順序はコード ページによって決まります。 次の例は、一般的なバイナリの並べ替え順序を示しています。
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text
の文字列比較は、アプリケーションのロケールによって決まる、大文字と小文字を区別しないテキストの並べ替え順序に基づきます。 前の例で Option Compare Text
を設定して文字を並べ替えると、次のテキストの並べ替え順序が適用されます。
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
ロケール依存性
Option Compare Text
を設定すると、文字列比較の結果が、アプリケーションが実行されているロケールによって変わる場合があります。 2 文字の比較では、あるロケールで等しくても、別のロケールでは等しくならない場合があります。 ログオン試行を受け入れるかどうかなど、重要な決定を行うために文字列比較を使用している場合は、ロケールの感度に関する警告が表示されます。 Option Compare Binary
を設定するか、ロケールを考慮する StrComp を呼び出すことを検討してください。
関係比較演算子を使用した型宣言を省略したプログラミング
Object
式での関係比較演算子の使用は、Option Strict On
では許可されていません。 Option Strict
が Off
であり、expression1
または expression2
が Object
式の場合、実行時の型によって比較方法が決まります。 次の表に、オペランドの実行時の型に応じた、式の比較方法と比較結果を示します。
オペランドが次の場合 | 比較 |
---|---|
両方とも String |
文字列の並べ替え特性に基づいて比較を並べ替えます。 |
両方とも数値 | オブジェクトが Double に変換され、数値比較が実行されます。 |
1 つが数値、1 つが String |
String は Double に変換され、数値比較が実行されます。 String を Double に変換できない場合、InvalidCastException がスローされます。 |
一方または両方が String 以外の参照型 |
InvalidCastException がスローされます。 |
数値比較では、Nothing
を 0 として扱います。 文字列比較では、Nothing
を ""
(空の文字列) として扱います。
オーバーロード
関係比較演算子 (<
、<=
、>
、>=
、=
、<>
) は "オーバーロード" できます。つまり、オペランドがクラスまたは構造体の型を持っているときに、そのクラスまたは構造体の動作を再定義できます。 コードで、そのようなクラスまたは構造体に対してこれらの演算子が使用される場合は、再定義された動作を理解しておいてください。 詳細については、「 Operator Procedures」を参照してください。
= 演算子は、代入演算子としてではなく、関係比較演算子としてのみオーバーロードできます。
例
次の例は、式を比較するために使用する関係比較演算子のさまざまな用途を示します。 関係比較演算子は、記述された式が True
に評価されるかどうかを表す Boolean
の結果を返します。 文字列に >
演算子と <
演算子を適用すると、文字列の通常のアルファベット順の並べ替え順序を使用して比較が行われます。 この順序は、ロケールの設定によって異なります。 並べ替えで大文字と小文字を区別するかどうかは、Option Compare の設定によって異なります。
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
前の例では、最初の比較によって False
が返され、残りの比較で True
が返されています。
関連項目
.NET