VB / VB.NET 运算符对照表
免费使用
超详细版
可复制
VB / VB.NET 运算符完整速查表,涵盖算术(含 VB 独有的 \ 整除和 Mod)、关系(<> 而非 !=)、逻辑(And/Or/AndAlso/OrElse)、字符串连接(&)、Like 模式匹配、Is/IsNot、类型转换函数等全部内容。
| 分类 | 运算符 | 名称 | 示例代码 | 结果 | 说明 / 注意事项 |
|---|---|---|---|---|---|
| 算术运算符 | |||||
| + | 加法 | a = 3 + 2 ' 5 | VB 中 + 兼具加法和字符串拼接(取决于操作数类型) | ||
| - | 减法/取负 | a = 5 - 3 ' 2 | 单目 - 表示负数 | ||
| * | 乘法 | a = 4 * 3 ' 12 | |||
| / | 除法(浮点) | a = 7 / 3 ' 2.333... | VB 的 / 始终返回 Double(不截断) | ||
| \ | 整除(整数除) | a = 7 \ 3 ' 2 | VB 特有;结果截断为整数 | ||
| Mod | 取模 | a = 7 Mod 3 ' 1 | VB 特有写法(不是 %) | ||
| ^ | 幂运算 | a = 2 ^ 10 ' 1024 | 幂运算优先级最高 | ||
| ++/-- | 无 | VB 无 ++/-- | 用 a += 1 或 a = a + 1 替代 | ||
| 关系运算符 | |||||
| = | 等于 | 5 = 5 ' True | VB 中等号兼作赋值和比较(按上下文区分) | ||
| <> | 不等于 | 5 <> 3 ' True | VB 用 <> 而非 != | ||
| > | 大于 | 5 > 3 ' True | |||
| < | 小于 | 3 < 5 ' True | |||
| >= | 大于等于 | 5 >= 5 ' True | |||
| <= | 小于等于 | 3 <= 5 ' True | |||
| 逻辑运算符 | |||||
| And | 逻辑与(非短路) | True And False ' False | VB6 中非短路;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+3 | VB6 不支持,用 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/False | VB 的 Is 等价于 C# 的 ==(引用类型) | ||
| IsNot | 引用不等(VB.NET) | obj IsNot Nothing | VB.NET 新增,可读性更好 | ||
| TypeOf...Is | 类型检测 | TypeOf obj Is MyClass | VB 特有语法(非运算符但常用) | ||
| 特殊运算符 | |||||
| Like | 模式匹配 | "abc" Like "a*" ' True | VB 独有强大功能;支持 * ? # [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 ' 1 | VB 用逻辑运算符兼做位运算(与 C 不同) | ||
| << / >> | 位移(VB.NET) | 5 << 1 ' 10 | VB.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
