次の方法で共有


Not 演算子 (Visual Basic)

Boolean 式の場合は論理否定、数値式の場合はビットごとの否定を求めます。

構文

result = Not expression  

指定項目

result
必須です。 任意の Boolean または数値式。

expression
必須です。 任意の Boolean または数値式。

Remarks

次の表は、Boolean 式で、result がどのように決定されるかを示しています。

expression が次の場合 result の値は次のようになります
True False
False True

数値式の場合、Not 演算子は、次の表に従って数値式のビット値を反転させ、result に対応するビットを設定します。

expression 内のビットが次の場合 result 内のビットは次のようになります
1 0
0 1

Note

論理演算子とビット演算子は、他の算術演算子および関係演算子より優先順位が低いので、正確な実行を保証するために、ビットごとの演算はかっこで囲む必要があります。

Boolean? として評価される Not someStr?.Contains("some string") またはその他の値が nothing または HasValue=false の値を持つ場合は、else ブロックが実行されることに注意してください。 この評価は、null/nothing が何も等しくなく、別の null/nothing とも等しくない SQL 評価に従います。

データの種類

ブール値の否定の場合、結果のデータ型は Boolean になります。 ビットごとの否定の場合、結果のデータ型は expression のデータ型と同じになります。 ただし、式が Decimal の場合、結果は Long になります。

オーバーロード

Not 演算子は "オーバーロード" できます。つまり、オペランドがあるクラスまたは構造体の型を持っているときに、そのクラスまたは構造体はその動作を再定義できます。 コードで、そのようなクラスまたは構造体に対してこの演算子が使用される場合は、再定義された動作を理解していることを確認してください。 詳細については、「 Operator Procedures」を参照してください。

例 1

次の例では、Boolean 式で Not 演算子を使用して論理否定を実行しています。 この結果は、式の値の反転を表す Boolean 値です。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck As Boolean
firstCheck = Not (a > b)
secondCheck = Not (b > a)

前の例では、それぞれ FalseTrue の結果が生成されます。

例 2

次の例では、Not 演算子を使用して、数値式の個々のビットの論理否定を実行しています。 結果パターンのビットは、オペランド パターンの対応するビットの反転に設定されます (符号ビットを含む)。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstPattern, secondPattern, thirdPattern As Integer
firstPattern = (Not a)
secondPattern = (Not b)
thirdPattern = (Not c)

前の例では、結果としてそれぞれ –11、–9、および –7 が生成されます。

関連項目