Visual Basic 运算符
运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。VB 有丰富的内置运算符,并提供以下类型的常用运算符:
- 算术运算符
- 比较运算符
- 逻辑/位运算符位
- 移运算符
- 赋值运算符
- 其他运算符
本教程将介绍最常用的运算符。
算术运算符
下表显示了 VB 支持的所有算术运算符。假设变量 A=2,变量 B=7,则
| 运算符 | 描述 | 说明 |
|---|---|---|
| ^ | 一个操作数的指定次幂值 | B^A = 49 |
| + | 两个操作数相加 | A + B = 9 |
| - | 第一个操作数减去第二个操作数 | A - B = -5 |
| * | 两个操作数相乘 | A * B = 14 |
| / | 第一个操作数除以第二个操作数 | B / A = 3.5 |
| \ | 第一个操作数除以第二个操作数的整数值 | B / A = 3 |
| MOD | 模运算符,整数除法后的余数 | B / A = 1 |
比较运算符
下表显示了 VB 支持的所有比较运算符。假设变量 A=10,变量 B=20,则
| 运算符 | 描述 | 说明 |
|---|---|---|
| == | 检查两个操作数的值是否相等; 如果是,那么条件为 True。 | (A == B)结果为:False |
| <> | 检查两个操作数的值是否相等; 如果值不相等,则条件为 True。 | (A <> B)结果为:True |
| > | 检查左操作数的值是否大于右操作数的值; 如果是,则条件为 True。 | (A > B)结果为:False |
| < | 检查左操作数的值是否小于右操作数的值; 如果是,则条件为 True。 | (A < B)结果为:True |
| >= | 检查左操作数的值是否大于等于右操作数的值; 如果是,则条件为 True。 | (A >= B)结果为:False |
| <= | 检查左操作数的值是否小于等于右操作数的值; 如果是,则条件为 True。 | (A <= B)结果为:True |
除此之外,VB 还提供了三个比较运算符,我们将在以后的章节中使用它们。 但是,在这里给出一个简短的描述。
Is运算符 - 它比较两个对象引用变量,并确定两个对象引用是否引用同一个对象而不执行值比较。 如果object1和object2都引用完全相同的对象实例,则结果为 True; 否则,结果为 False。IsNot运算符 - 它还比较两个对象引用变量,并确定两个对象引用是否引用不同的对象。 如果object1和object2都引用完全相同的对象实例,则结果为 False; 否则,结果为 True。Like运算符 - 它将字符串与模式进行比较。
逻辑/位运算符
下表显示了 VB 支持的所有逻辑运算符。假设变量 A = True,变量 B = False,则
| 运算符 | 描述 | 说明 |
|---|---|---|
| And | 它是逻辑运算符,也是按位运算符。如果两个操作数都是:True,则条件成立。 该运算符不执行短路,即它评估两个表达式的值。 | (A And B)结果为:False |
| Or | 它是逻辑以及按位或运算符。如果两个操作数中的任何一个为 True,则条件成立。 该运算符不执行短路,即它评估两个表达式。 | (A Or B)结果为:True |
| Not | 它是逻辑,也是按位运算符。用于反转其操作数的逻辑状态。如果条件成立,那么逻辑非运算符结果为:False。 | Not(A And B)结果为:True |
| Xor | 它是逻辑,也是按位的逻辑异或运算符。 如果两个表达式均为 True 或两个表达式均为 False,则返回 True; 否则返回 False。 该运算符不执行短路,它总是评估这两个表达式,并且没有短路对应。 | A Xor B结果为:True |
| AndAlso | 这是逻辑 AND 运算符,它只适用于布尔数据,并可执行短路。 | (A AndAlso B)结果为:False |
| OrElse | 这是合乎逻辑的OR运算符,它只适用于布尔数据,并可执行短路。 | (A OrElse B)结果为:True |
| IsFalse | 它确定一个表达式是否为 False。 | |
| IsTrue | 它确定一个表达式是否为 True。 |
位运算符
前面已经讨论了按位运算符,移位运算符对二进制值执行移位操作。在进入移位运算符之前,让我们了解位操作。
按位运算符处理位并执行逐位操作。 &,|和^的真值表如下:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
假设 A = 60 而 B = 13 如果以二进制格式表示,它们将如下所示:
A = 0011 1100B = 0000 1101-----------------A&B = 0000 1100A|B = 0011 1101A^B = 0011 0001~A = 1100 0011
前面已经看到 VB 支持的按位运算符是:And,Or,Xor 和 Not。移位运算符分别是:>> 和 <<表示左移和右移。
假设变量 A = 60,变量 B = 13,那么
| 运算符 | 描述 | 说明 |
|---|---|---|
| And | 如果在两个操作数中都存在,则按位 AND 运算符会复制结果。 | (A AND B)结果为:12, 也就是:0000 1100 |
| Or | 二进制或运算符复制一个位,如果它存在于任一操作数。 | (A Or B) 结果为 61, 也就是:0011 1101 |
| Xor | 如果二进制XOR运算符被设置在一个操作数中,但它们不能同时被二进制 XOR 运算符复制。 | (A Xor B)结果为:49,也就是:0011 0001 |
| Not | 二进制补码运算符是一元运算符,具有 "反转" 位的作用。 | (Not A )结果为:-61,也就是:1100 0011 |
| << | 二进制左移运算符。左操作数值左移由右操作数指定的位数。 | A << 2 结果为:240, 也就是:1111 0000 |
| >> | 二进制右移运算符。左操作数值右移由右操作数指定的位数。 | A >> 2结果为:15, 也就是:0000 1111 |
赋值运算符
VB 支持下列赋值运算符:
| 运算符 | 描述 | 说明 |
|---|---|---|
| = | 简单赋值操作符,将右侧操作数的值赋给左侧操作数 | C = A + B将把A + B的值赋值给C |
| += | 添加和赋值操作符,它将右操作数添加到左操作数,并将结果赋给左操作数 | C += A 等效于 C = C + A |
| -= | 减去和赋值运算符,从左边的操作数中减去右边的操作数,并将结果赋给左边的操作数 | C -= A 等效于 C = C - A |
| *= | 乘法和赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数 | C = A 等效于 C = C A |
| /= | 除法和赋值运算符,用左操作数和右运算数分开,赋值给左操作数(浮点除法) | C /= A 等效于 C = C / A |
| \= | 除法和赋值运算符,用左操作数除以右操作数,并将结果赋给左操作数(整数除法) | C \= A 等效于 C = C \A |
| ^= | 指数运算和赋值运算符。它将左操作数指定的右操作数指数的幂值,并将结果赋给左操作数。 | C^=A 等效于 C = C ^ A |
| <<= | 左移和赋值运算符 | C <<= 2 等效于 C = C << 2 |
| >>= | 右移和赋值运算符 | C >>= 2 等效于 C = C >> 2 |
| &= | 将一个字符串(String)表达式连接到一个字符串(String)变量或属性,并将结果赋给变量或属性。 | Str1 &= Str2 等效于 Str1 = Str1 & Str2 |
其他运算符
VB 还支持其他重要的运算符。
| 运算符 | 描述 | 实例 |
|---|---|---|
| AddressOf | 返回过程的地址。 |
|
| Await | 它应用于异步方法或 lambda 表达式中的操作数,以暂停方法的执行,直到等待的任务完成 |
|
| GetType | 它返回指定类型的 Type 对象。Type 对象提供有关类型的信息,例如其属性、方法和事件。 |
|
| Function Expression | 它声明定义函数 lambda 表达式的参数和代码 |
|
| If | 使用短路评估来有条件地 返回两个值。If 运算符可以用三个 参数或两个参数来调用。 |
|
VB 运算符优先级
运算符优先级决定表达式中术语的分组。这会影响表达式的评估方式。某些运算符的优先级高于其他运算符,则会被优先运算; 例如,乘法运算符比加法运算符具有更高的优先级:
例如,表达式:x = 7 + 3 * 2; 在这里,x 被赋值为 13,而不是 20,因为运算符*的优先级高于 +,所以它先乘以 3 * 2,然后加上 7,所以最后结果为:13
在这里,优先级最高的操作符出现在表顶部,最低优先级的操作符出现在底部。 在表达式中,更高优先级的运算符将首先被评估(计算)。
| 运算符 | 描述 |
|---|---|
| Await | 最高级 |
| 幂(^) | |
| 一元标识符和否定(+,-) | |
| 乘法和浮点除法(*, /) | |
| 整数除() | |
| 模数运算(Mod) | |
| 算术位移(<<,>>) | |
| 所有比较运算符(=,<>,<,<=,>,>=,Is,IsNot,Like,TypeOf, …, Is) | |
| 否定(Not) | |
| 连接(And, AndAlso) | |
| 包含分离(OR,OrElse) | |
| 异或(XOR) |