次の方法で共有


比較演算子 (Visual Basic)

Visual Basic で定義されている比較演算子を次に示します。

< 演算子

<= 演算子

> 演算子

>= 演算子

= 演算子

<> 演算子

Is 演算子

IsNot 演算子

Like 演算子

これらの演算子は、2 つの式を比較して、それらが等しいかどうか、および等しくない場合は、それらがどのように異なるかを判断します。 IsIsNot、および Like については、個別のヘルプ ページで詳しく説明します。 関係比較演算子については、このページで詳しく説明します。

構文

result = expression1 comparisonoperator expression2  
result = object1 [Is | IsNot] object2  
result = string Like pattern  

部品

result
必須。 比較の結果を表す Boolean 値。

expression1expression2
必須。 任意の式。

comparisonoperator
必須。 任意のリレーショナル比較演算子。

object1object2
必須。 参照オブジェクト名。

string
必須。 任意の String 式。

pattern
必須。 任意の String 式または文字範囲。

注釈

次の表に、リレーショナル比較演算子と、 resultTrueFalseかを決定する条件の一覧を示します。

オペレーター 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 文字は、1 つのロケールでは等しいが、別のロケールでは等しくないと比較される場合があります。 ログオンの試行を受け入れるかどうかなど、重要な決定を行うために文字列比較を使用している場合は、ロケールの機密性を警告する必要があります。 Option Compare Binary設定するか、ロケールを考慮してStrCompを呼び出すかを検討してください。

関係比較演算子を使用した型指定なしのプログラミング

Option Strict Onでは、Object式でリレーショナル比較演算子を使用することはできません。 Option StrictOffされ、expression1またはexpression2Object式である場合、実行時の型によって比較方法が決まります。 次の表は、オペランドのランタイム型に応じて、式の比較方法と比較の結果を示しています。

オペランドが 比較は次の場合です。
両方とも String 文字列の並べ替え特性に基づいて比較を並べ替えます。
両方の数値 Doubleに変換されたオブジェクト、数値比較。
1 つの数値と 1 つの数値 String StringDoubleに変換され、数値比較が実行されます。 StringDoubleに変換できない場合は、InvalidCastExceptionがスローされます。
どちらか一方または両方が、〘〗 String InvalidCastExceptionがスローされます。

数値比較では、 Nothing は 0 として扱います。 文字列比較では、 Nothing"" (空の文字列) として扱われます。

オーバーロード

関係比較演算子 (<. <=>>==<>) を オーバーロードできます。つまり、オペランドがそのクラスまたは構造体の型を持つ場合、クラスまたは構造体は動作を再定義できます。 コードでこのようなクラスまたは構造体でこれらの演算子のいずれかを使用する場合は、再定義された動作を理解していることを確認してください。 詳細については、「 演算子プロシージャ」を参照してください。

= 演算子は、代入演算子としてではなく、関係比較演算子としてのみオーバーロードできることに注意してください。

次の例は、式の比較に使用するリレーショナル比較演算子のさまざまな使用方法を示しています。 関係比較演算子は、指定された式がTrueに評価されるかどうかを表すBoolean結果を返します。 文字列に > 演算子と < 演算子を適用すると、文字列の通常のアルファベット順の並べ替え順序を使用して比較が行われます。 この順序は、ロケールの設定によって異なる場合があります。 並べ替えが大文字と小文字を区別するかどうかは、[ オプション比較 ] 設定によって異なります。

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を返します。

こちらも参照ください