ここではVB.NETの演算子について見ていきます。
基本的な演算子はVB6とほぼ同じです。
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については複合代入演算子が用意されていません。
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以前の論理演算子と代わりありません。
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
VB.NETでは新たにAndAlsoとOrElseという演算子が追加されました。 これはショートサーキットによる評価を行うための演算子で、第一項がFalseの場合、AndAlsoは第二項を評価せずにFalseを返します。 同様に、第一項がTrueの場合、OrElseは第二項を評価せずに Trueを返します。 これらの真理値表をまとめると次のようになります。
| 第一項 | 第二項 | 結果 |
| False | False | False |
| False | True | True |
| True | False | True |
| True | True | True |
| 第一項 | 第二項 | 結果 |
| False | False | False |
| False | True | True |
| True | (評価しない) | True |
| 第一項 | 第二項 | 結果 |
| False | False | False |
| False | True | False |
| True | False | False |
| True | True | True |
| 第一項 | 第二項 | 結果 |
| False | (評価しない) | False |
| True | False | False |
| True | True | True |
VB6以前に存在したEqv, Imp演算子はVB.NETではなくなりました。 これらの演算子と同様の結果を得るには次のようにします
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 2003(Visual Studio .NET 2003)からは、VB.NETでも算術ビットシフト演算子がサポートされるようになりました。 ビットシフト演算子はその名の通り、数のビット表記に対してその表記を右または左にシフトする演算子です。
算術的には、1ビット右にシフトする事は数を2で除することと等しく、1ビット左にシフトする事は数を2で乗ずる事と等しい演算です。 なお、ビットシフト演算子はその特性上、整数型(Byte, Short, Integer, Long)に対してのみ使用できます。 ビットシフト演算子は、下の例のようにシフトする対称の値を演算子の左の項に書き、右側にシフトする量を記述します。
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> 2 ' 算術右シフト i = 2 i = 3 << 2 ' 算術左シフト i = 12 i = 5 i = i >> 1 ' 算術右シフト i = 2 i = i << 3 ' 算術左シフト i = 16]]>
また、ビットシフトと代入を同時に行う複合代入演算子も用意されています。
Dim i As Integer i = 5 i >>= 1 ' 算術右シフト i = 2 i <<= 3 ' 算術左シフト i = 16>= 1 ' 算術右シフト i = 2 i <<= 3 ' 算術左シフト i = 16]]>