演算子

注意:
この文書は以前「.NETでいきまっしょい!」で公開していたものですが、公開以降メンテナンスされていません。 今や古い情報となった内容が記載されている場合があるのでご注意ください。

基本的な算術演算子

 基本的な演算子はVB6とほぼ同じです。
001
002
003
004
005
006
007
008
009
010
011
012
013
014
Dim i As Integer

i = 1 + 2   ' 加算 i = 3
i = 3 - 1   ' 減算 i = 2
i = 4 * 3   ' 乗算 i = 12
i = 6 / 2   ' 除算 i = 3
i = 5 Mod 3 ' 剰余 i = 2
i = 5 \ 3   ' 商 i = 1
i = 2 ^ 3   ' べき乗 i = 8

Dim s As String = "String"

s = s + "文字列" ' 文字列の連結 s = "String文字列"
s = s & "String" ' 文字列の連結 s = "String文字列String"

代入演算子

 VB.NETからは複合代入演算子が使用できるようになりました。 ただ残念ながら、Modについては使用することができません。
001
002
003
004
005
006
007
008
009
010
011
012
013
Dim i As Integer = 5

i += 1 ' i = i + 1 と 等価
i -= 2 ' i = i - 2 と 等価
i *= 3 ' i = i * 3 と 等価
i /= 4 ' i = i * 4 と 等価
i \= 5 ' i = i \ 5 と 等価
i ^= 6 ' i = i ^ 6 と 等価

Dim s As String = "String"

s += "文字列" ' s = s + "文字列" と 等価
s &= "String" ' s = s & "String" と 等価
 しかしながら、インクリメント演算子(++)、ディクリメント演算子(--)は存在しません。

論理演算子

 VB.NETでの論理演算子はVB6以前の論理演算子と代わりありません。
001
002
003
004
005
006
007
008
009
Dim b, b1, b2 As Boolean

b1 = True
b2 = False

b = b1 Or b2 ' b = True
b = b1 And b2 ' b = False
b = b1 Xor b2 ' b = True
b = Not b1 ' b = False
 VB6以前に存在したEqv, Imp演算子はVB.NETではなくなりました。 これらの演算子と同様の結果を得るには次のようにします。
001
002
003
004
005
Dim b, b1, b2 As Boolean

' Eqv演算子、Imp演算子と同じ結果を得る方法
b = (b1 = b2) ' VB6以前の「b = b1 Eqv b2」と等価
b = (Not b1) Or b2 ' VB6以前の「b = b1 Imp b2」と等価
 VB.NETでは新たにAndAlsoとOrElseという演算子が追加されました。 これはショートサーキットによる評価を行うための演算子で、第一項がFalseの場合、AndAlsoは第二項を評価せずにFalseを返します。 同様に、第一項がTrueの場合、OrElseは第二項を評価せずにTrueを返します。 これらの真理値表をまとめると次のようになります。
Or演算子の真理値表
第一項第二項結果
FalseFalseFalse
FalseTrueTrue
TrueFalseTrue
TrueTrueTrue
OrElse演算子の真理値表
第一項第二項結果
FalseFalseFalse
FalseTrueTrue
True(評価しない)True
And演算子の真理値表
第一項第二項結果
FalseFalseFalse
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue
AndAlso演算子の真理値表
第一項第二項結果
False(評価しない)False
TrueFalseFalse
TrueTrueTrue

ビットシフト演算子

 VB.NET 2003(Visual Studio .NET 2003)からは、VB.NETでも算術ビットシフト演算子がサポートされるようになりました。 ビットシフト演算子はその名の通り、数のビット表記に対してその表記を右または左にシフトする演算子です。
 算術的には、1ビット右にシフトする事は数を2で除することと等しく、1ビット左にシフトする事は数を2で乗ずる事と等しい作業です。 なお、ビットシフト演算子はその特性上、整数型(Byte, Short, Integer, Long)に対してのみ使用できます。 ビットシフト演算子は、下の例のようにシフトする対称の値を演算子の左の項に書き、右側にシフトする量を記述します。
001
002
003
004
005
006
007
008
Dim i As Integer

i = 8 >> 2 ' 算術右シフト i = 2
i = 3 << 2 ' 算術左シフト i = 12

i = 5
i = i >> 1 ' 算術右シフト i = 2
i = i << 3 ' 算術左シフト i = 16
 また、ビットシフトと代入を同時に行う複合代入演算子も用意されています。
001
002
003
004
005
Dim i As Integer

i = 5
i >>= 1 ' 算術右シフト i = 2
i <<= 3 ' 算術左シフト i = 16