乐宁工具

VB / VB.NET 运算符对照表

免费使用 超详细版 可复制

VB / VB.NET 运算符完整速查表,涵盖算术(含 VB 独有的 \ 整除和 Mod)、关系(<> 而非 !=)、逻辑(And/Or/AndAlso/OrElse)、字符串连接(&)、Like 模式匹配、Is/IsNot、类型转换函数等全部内容。

分类运算符名称示例代码结果说明 / 注意事项
算术运算符
+加法a = 3 + 2 ' 5VB 中 + 兼具加法和字符串拼接(取决于操作数类型)
-减法/取负a = 5 - 3 ' 2单目 - 表示负数
*乘法a = 4 * 3 ' 12
/除法(浮点)a = 7 / 3 ' 2.333...VB 的 / 始终返回 Double(不截断)
\整除(整数除)a = 7 \ 3 ' 2VB 特有;结果截断为整数
Mod取模a = 7 Mod 3 ' 1VB 特有写法(不是 %)
^幂运算a = 2 ^ 10 ' 1024幂运算优先级最高
++/--VB 无 ++/--用 a += 1 或 a = a + 1 替代
关系运算符
=等于5 = 5 ' TrueVB 中等号兼作赋值和比较(按上下文区分)
<>不等于5 <> 3 ' TrueVB 用 <> 而非 !=
>大于5 > 3 ' True
<小于3 < 5 ' True
>=大于等于5 >= 5 ' True
<=小于等于3 <= 5 ' True
逻辑运算符
And逻辑与(非短路)True And False ' FalseVB6 中非短路;VB.NET 中 And 也非短路
Or逻辑或(非短路)True Or False ' True
Not逻辑非Not True ' False
Xor逻辑异或True Xor True ' False两操作数相同为 False
AndAlso短路与(VB.NET)True AndAlso False左为 False 时右不求值VB.NET 新增,等价于 C# 的 &&
OrElse短路或(VB.NET)True OrElse ...左为 True 时右不求值VB.NET 新增,等价于 C# 的 ||
字符串运算符
&字符串连接(推荐)"Hello" & " " & "World"结果 "Hello World"推荐始终用 & 连接字符串
+字符串连接(兼容)"Hello" + "World"结果 "HelloWorld"当操作数都是字符串时可用;混用时用 &
赋值运算符
=赋值a = 10
+=加等(VB.NET)a += 3 ' a=a+3VB6 不支持,用 a = a + 3
-= *= /=复合赋值(VB.NET)a -= 3
类型转换(VB.NET)
CInt/CSng/CStr 等类型转换函数Dim i As Integer = CInt(3.7) ' 4四舍五入取整;VB 特有家族:CInt CDbl CStr CDate
DirectCast类型转换Dim s As String = DirectCast(obj, String)失败抛 InvalidCastException比 CType 更严格,仅用于继承/接口关系
TryCast安全转换(VB.NET)Dim s = TryCast(obj, String)失败返回 Nothing等价于 C# 的 as
对象运算符
Is引用相等obj1 Is obj2 ' True/FalseVB 的 Is 等价于 C# 的 ==(引用类型)
IsNot引用不等(VB.NET)obj IsNot NothingVB.NET 新增,可读性更好
TypeOf...Is类型检测TypeOf obj Is MyClassVB 特有语法(非运算符但常用)
特殊运算符
Like模式匹配"abc" Like "a*" ' TrueVB 独有强大功能;支持 * ? # [charlist]
AddressOf取方法指针Dim d = AddressOf MySub函数指针/委托
GetType获取类型GetType(Integer)VB.NET 等价于 C# 的 typeof
NameOf名称引用(VB.NET)NameOf(MyClass) ' "MyClass"重构安全
条件运算符
If(cond,truePart,falsePart)三元(VB.NET)Dim r = If(a>b,a,b)VB.NET 10+ 引入;类似 C# 三元
IIf(cond,truePart,falsePart)立即If(VB6 遗留)r = IIf(a>b,a,b)VB6 时代三元替代;总是求值两边(无短路)
位运算(VB.NET)
And / Or / Xor / Not按位运算5 And 3 ' 1VB 用逻辑运算符兼做位运算(与 C 不同)
<< / >>位移(VB.NET)5 << 1 ' 10VB.NET 2003+ 支持
优先级(高→低)
^幂运算最高优先级
- (一元)取负-a
* /乘除
\整除
Mod取模
+ -(二元)加减/拼接
&字符串连接
<< >>位移(VB.NET)
= <> < > <= >=关系比较
Not逻辑非
And / AndAlso逻辑与AndAlso 低于 And
Or / OrElse逻辑或OrElse 低于 Or
Xor逻辑异或
优先级(最低)
=赋值最低优先级

VB / VB.NET 运算符注意事项

  • • VB 用 <> 表示不等于(不是 !=);用 = 兼作赋值和比较(按上下文区分)
  • \ 是整除(截断为整数),/ 是浮点除 —— 这是 VB 最容易与 C 家族混淆的地方
  • Mod 是取模关键字(不是 %);^ 是幂运算(不是异或)
  • • 字符串连接推荐用 &(不是 +),避免与加法混淆;+ 在两边都是字符串时也可用
  • And/Or 在 VB6 中非短路;VB.NET 新增 AndAlso/OrElse 才是短路版本
  • Like 是 VB 独有强大功能:支持 *(任意字符)、?(单字符)、#(数字)、[a-z](字符集)
  • Is 比较对象引用(类似 C# == 引用),IsNot 可读性更好
  • IIf() 总是求值两边(无短路),可能触发空引用;VB.NET 10+ 用 If(cond,a,b) 替代
  • • VB.NET 中 And/Or 同时承担逻辑运算和按位运算(与 C 不同)

& 字符串连接

推荐始终用 & 连接字符串,避免 + 号的类型歧义

AndAlso / OrElse

VB.NET 短路逻辑,等价于 C# 的 && 和 ||

Like 模式匹配

"abc" Like "a*" → True;支持 * ? # [charlist]

CInt / TryCast

CInt 四舍五入取整;TryCast 失败返回 Nothing