VB.Net - 运算符
运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 VB.Net丰富的内置运算符,并提供以下类型的常用运算符:
-
算术运算符
-
比较运算符
-
逻辑/位运算符
-
位移位运算符
-
赋值运算符
-
其他运算符
本教程将介绍最常用的运算符。
算术运算符
下表显示了VB.Net支持的所有算术运算符。 假设变量A保持2,变量B保持7,则:
运算符 | 描述 | 例 |
---|---|---|
^ |
将一个操作数作为为另一个的幂 |
B^A 结果为 49 |
+ |
添加两个操作数s
|
A + B 结果为9 |
- | 从第一个操作数中减去第二个操作数 | A - B 结果为 -5 |
* |
将两个操作数相乘
|
A * B 结果为 14 |
/ | 将一个操作数除以另一个操作数,并返回一个浮点结果 | B / A 结果为 3.5 |
\ | 将一个操作数除以另一个操作数,并返回一个整数结果 | B \ A 结果为 3 |
MOD | 模数运算符和整数除法后的余数 | B MOD A 结果为 1 |
比较运算符
下表显示了VB.Net支持的所有比较运算符。 假设变量A保持10,变量B保持20,则:
运算符 | 描述 | 例 |
---|---|---|
= | 检查两个操作数的值是否相等; 如果是,则结果为真。 | (A = B)为假。 |
<>
|
检查两个操作数的值是否相等; 如果值不相等,则结果为真。
|
(A<>B)为真。 |
> | 检查左操作数的值是否大于右操作数的值; 如果是,则结果为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值; 如果是,则结果为真。 | (A <B)为真。 |
> = | 检查左操作数的值是否大于或等于右操作数的值; 如果是,则结果为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值; 如果是,则结果为真。 | (A <= B)为真。 |
除了上述情况外,VB.Net提供了三个比较运算符,我们将在以后的章节中使用; 然而,我们在这里给出一个简短的描述。
1、
Is运算符- 它比较两个对象引用变量,并确定两个对象引用是否引用相同的对象,而不执行值比较。 如果object1和object2都引用完全相同的对象实例,则结果为True; 否则,结果为False。
2、
IsNot运算符- 它还比较两个对象引用变量,并确定两个对象引用是否引用不同的对象。 如果object1和object2都引用完全相同的对象实例,则结果为False; 否则,结果为True。
3、
Like运算符- 它将字符串与模式进行比较。
逻辑/位运算符
下表显示了VB.Net支持的所有逻辑运算符。 假设变量A保持布尔值True,变量B保持布尔值False,则:
运算符 | 描述 | 例 |
---|---|---|
And | 它是逻辑以及按位AND运算符。 如果两个操作数都为真,则条件为真。 此运算符不执行短路,即,它评估两个表达式。 | (A和B)为假。 |
Or | 它是逻辑以及按位或运算符。 如果两个操作数中的任何一个为真,则条件为真。 此运算符不执行短路,即,它评估两个表达式。 | (A或B)为真。 |
Not | 它是逻辑以及按位非运算符。 用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将为假。 | 没有(A和B)为真。 |
Xor | 它是逻辑以及按位逻辑异或运算符。 如果两个表达式都为True或两个表达式都为False,则返回True; 否则返回False。 该运算符不会执行短路,它总是评估这两个表达式,并且没有该运算符的短路对应。 | 异或B为真。 |
AndAlso | 它是逻辑 AND 运算符。它仅适用于布尔型数据。它 执行短路。 | (A AndAlso运算B)为假。 |
OrElse | 它是逻辑或运算符。 它只适用于布尔数据。 它执行短路。 | (A OrElse运算B)为真。 |
IsFalse | 它确定表达式是否为假。 | |
IsTrue | 它确定表达式是否为真。 |
位移运算符
我们已经讨论了按位运算符。 位移运算符对二进制值执行移位操作。 在进入位移运算符之前,让我们来了解位操作。
按位运算符处理位并执行逐位操作。 &,|和^的真值表如下:
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 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
〜A = 1100 0011
我们已经看到VB.Net支持的位运算符是And,Or,Xor和Not。 位移位算子分别是用于左移和右移的>>和<<。
假设变量A保持60,变量B保持13,则:
运算符 | 描述 | 示例 |
---|---|---|
And | 如果两个操作数都存在,则按位AND运算符将一个位复制到结果。 | (A AND B) 结果为 12, 即 0000 1100 |
Or | 二进制OR运算符复制一个位,如果它存在于任一操作数。 | (A Or B) 结果为 61, 即0011 1101 |
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.Net支持以下赋值运算符:
运算符 | 描述 | 例 |
---|---|---|
= |
简单赋值操作符,将值从右侧操作数分配给左侧操作数 |
C = A + B A + B将赋值为C |
+ = | 添加AND赋值运算符,向左操作数添加右操作数,并将结果赋值给左操作数 | C + = A等于C = C + A |
- = | 减法AND赋值运算符,它从左操作数中减去右操作数,并将结果赋值给左操作数 | Ç - = A等于C = C - A |
* = | 乘法AND赋值运算符,它将右操作数与左操作数相乘,并将结果赋值给左操作数 | C * = A等于C = C * A |
/ = | 除法AND赋值运算符,它用右操作数划分左操作数,并将结果分配给左操作数(浮点除法) | C / = A等于C = C / A |
\ = | 除法AND赋值运算符,它用右操作数划分左操作数,并将结果分配给左操作数(整数除法) | ç = A等于C = C A |
^ = | 指数和赋值运算符。 它将左操作数提升为右操作数的幂,并将结果分配给左操作数。 | C ^ = A等于C = C ^ A |
<< = | 左移AND赋值运算符 | C语言的<< = 2是同C = C << 2 |
>> = | 右移AND赋值运算符 | C >> = 2 >> 2同C = C |
&= | 将String表达式连接到String变量或属性,并将结果分配给变量或属性。 |
STR1&= STR2 等价于 STR1 = STR1 + STR2(这里的加表示把两个字符串连接起来) |
其他运算符
有很少其他重要的操作系统支持VB.Net。
运算符 | 描述 | 例 |
---|---|---|
AddressOf | 返回过程的地址。 | AddHandler Button1.Click, AddressOf Button1_Click |
Await | 它应用于异步方法或lambda表达式中的操作数,以暂停该方法的执行,直到等待的任务完成。 | Dim result As res = Await AsyncMethodThatReturnsResult() Await AsyncMethod() |
GetType | 它返回指定类型的Type对象。 Type对象提供有关类型的信息,例如其属性,方法和事件。 | MsgBox(GetType(Integer).ToString()) |
Function Expression | 它声明定义函数lambda表达式的参数和代码。 | Dim add5 = Function(num As Integer) num + 5 'prints 10 Console.WriteLine(add5(5)) |
If | 它使用短路评估有条件地返回两个值之一。 可以使用三个参数或两个参数调用If运算符。 | Dim num = 5 Console.WriteLine(If(num >= 0, "Positive", "Negative")) |
VB.Net中的运算符优先级
运算符优先级确定表达式中的术语分组。 这会影响表达式的计算方式。 某些运算符比其他运算符具有更高的优先级; 例如,乘法运算符的优先级高于加法运算符:
例如,x = 7 + 3 * 2; 这里,x被分配13,而不是20,因为运算符 *具有比+高的优先级,所以它首先乘以3 * 2,然后加到7。
这里,具有最高优先级的运算符出现在表的顶部,具有最低优先级的运算符出现在底部。 在表达式中,将首先计算较高优先级运算符。
运算符 | 优先级 |
---|---|
Await | 最高 |
Exponentiation (^) | |
Unary identity and negation (+, -) | |
Multiplication and floating-point division (*, /) | |
Integer division (\) | |
Modulus arithmetic (Mod) | |
Addition and subtraction (+, -) | |
Arithmetic bit shift (<<, >>) | |
All comparison operators (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf...Is) | |
Negation (Not) | |
Conjunction (And, AndAlso) | |
Inclusive disjunction (Or, OrElse) | |
Exclusive disjunction (Xor) | 最低 |