在 Visual Basic 中,运算符是一个编程元素,用于指定需要对作数或变量执行的作。例如,Visual Basic 中的加法 (+) 运算符用于对作数执行求和运算。
运算符是什么?
运算符 = 告诉编译器「做什么操作」的符号。
运算符分类
根据微软最新文档,VB 运算符分:
① 算术
② 比较
③ 逻辑/布尔
④ 位运算
⑤ 字符串连接
⑥ 赋值
⑦ 其他(AddressOf/GetType/If 三元等)
算术运算符
运算符
功能
示例
结果
官方备注
+
加
5 + 2
7
-
减/取负
5 - 2 / -x
3
一元负号详见官方「Unary Operators」
*
乘
5 * 2
10
/
除(双精度结果)
5 / 2
2.5
始终返回 Double
\
整除(向下取整)
5 \ 2 / -5 \ 2
2 / -3
官方强调「向零截断」
Mod
取模
5 Mod 2 / -5 Mod 3
1 / 1
结果符号 = 被除数符号
^
幂
2 ^ 3
8
返回 Double
比较运算符(返回 Boolean)
运算符
功能
示例
结果
=
相等
"abc" = "ABC"
False(默认区分大小写)
<>
不等于
3 <> 2
True
< > <= >=
大小比较
Date.Parse("2025-09-18") > #2024-01-01#
True
Like
模式匹配
"F" Like "[A-Z]"
True
Is / IsNot
对象引用比较
If obj Is Nothing Then…
提示:字符串比较受 Option Compare 影响,详见后文。
逻辑/布尔运算符
运算符
功能
短路
官方示例
And
与
❌
True And False → False
Or
或
❌
True Or False → True
Not
非
—
Not True → False
Xor
异或
—
True Xor True → False
AndAlso
条件与
✅
False AndAlso 1/0=0 → False(后半不执行)
OrElse
条件或
✅
True OrElse 1/0=0 → True(后半不执行)
注意:
And/Or 会两边都计算,可用于位运算;
AndAlso/OrElse 仅用于布尔短路,不能用于位运算。
5. 位运算
运算符
功能
示例
结果
And
位与
12 And 6
4
Or
位或
12 Or 6
14
Not
位取反
Not 12
-13(补码)
Xor
位异或
12 Xor 6
10
提示:位运算操作数必须为整数类型(Byte/Short/Integer/Long)。
6. 字符串连接运算符
运算符
功能
示例
官方推荐
&
强制连接
"A" & 123
A123
✅ 推荐
+
看上下文连接
"A" + "123"
A123
⚠️ 当一边是数值时可能出错
注意:始终使用 & 可避免隐式类型转换错误。
赋值与复合赋值运算符
运算符
等价写法
官方版本要求
=
x = 5
所有版本
^=
x = x ^ 2
2005+
*=
x = x * 2
2005+
/=
x = x / 2
2005+
\=
x = x \ 2
2005+
+=
x = x + 1
2005+
-=
x = x - 1
2005+
&=
s = s & "OK"
2005+
其他官方运算符
运算符
功能
官方示例
AddressOf
取过程地址
Dim del As Action = AddressOf MySub
Await
异步等待
Dim html = Await httpClient.GetStringAsync(url)
GetType
得运行时 Type
Dim t = GetType(String)
TypeOf … Is
类型判断
If TypeOf obj Is String Then…
If 三元
兼容 ?:
Dim y = If(x > 0, x, -x)
Like
模式匹配
"abc" Like "a*" → True
运算符优先级
^(幂)
+ -(一元正负)
* / \(乘除整除)
Mod
+ -(加减)
&(字符串连接)
= < > <= >= <> Like Is IsNot(比较)
Not(位/逻辑取反)
And AndAlso
Or OrElse Xor
If 三元
= *= /= \= += -= ^=&=(赋值)
记不住?用括号最保险!
Option Compare 对字符串运算的影响
文件顶部可写:
Option Compare Binary ' 默认,区分大小写
Option Compare Text ' 不区分大小写
示例:
Option Compare Text
Console.WriteLine("abc" = "ABC") ' True
Console.WriteLine("abc" Like "A*") ' True
新增:If 三元运算符(VB 2008+)
语法:If(条件, 真值, 假值)
特点:
两个分支类型必须兼容
仅计算需要的分支(短路)
Dim score As Integer = 59
Dim level As String = If(score >= 60, "及格", "不及格")
实战:工资计算器
Module PayCalc
Sub Main()
Const HOUR_PAY As Decimal = 45.5D
Console.Write("请输入本月工时:")
Dim hour As Decimal = CDec(Console.ReadLine())
Dim base As Decimal = hour * HOUR_PAY
Dim bonus As Decimal = If(hour > 160, (hour - 160) * HOUR_PAY * 0.2D, 0)
Dim total As Decimal = base + bonus
Console.WriteLine($"基本工资:{base:C}")
Console.WriteLine($"绩效奖金:{bonus:C}")
Console.WriteLine($"实发工资:{total:C}")
End Sub
End Module
运行示例:
请输入本月工时:170
基本工资:¥7,735.00
绩效奖金:¥91.00
实发工资:¥7,826.00
小结口诀
幂乘除整除取模加减连,
比较 Like Is 再逻辑,
三元 If 最后赋值,
括号一撸保平安;
字符串连接用 &,
短路布尔 AndAlso / OrElse!