VB.Net运算符
运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。VB.Net有丰富的内置运算符,并提供以下类型的常用运算符:
- 算术运算符
- 比较运算符
- 逻辑/位运算符
- 位移运算符
- 赋值运算符
- 其他操作员
本教程将介绍最常用的运算符。
算术运算符
下表显示了VB.Net支持的所有算术运算符。假设变量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 |
算术运算符示例:https://www.xnip.cn/vb.net/vb.net_arithmetic_operators.html
比较运算符
下表显示了VB.Net支持的所有比较运算符。假设变量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.Net还提供了三个比较运算符,我们将在以后的章节中使用它们。 但是,在这里给出一个简短的描述。
Is
运算符 - 它比较两个对象引用变量,并确定两个对象引用是否引用同一个对象而不执行值比较。 如果object1
和object2
都引用完全相同的对象实例,则结果为True
; 否则,结果为False
。IsNot
运算符 - 它还比较两个对象引用变量,并确定两个对象引用是否引用不同的对象。 如果object1
和object2
都引用完全相同的对象实例,则结果为False
; 否则,结果为True
。Like
运算符 - 它将字符串与模式进行比较。
有关比较运算符的示例代码:https://www.xnip.cn/vb.net/vb.net_comparison_operators.html
逻辑/位运算符
下表显示了VB.Net支持的所有逻辑运算符。假设变量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 。 |
有关逻辑/位运算符的示例代码:https://www.xnip.cn/vb.net/vb.net_logical_operators.html
位移运算符
前面已经讨论了按位运算符,移位运算符对二进制值执行移位操作。在进入移位运算符之前,让我们了解位操作。
按位运算符处理位并执行逐位操作。 &
,|
和^
的真值表如下:
假设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 |
二进制或运算符复制一个位,如果它存在于任一操作数。 | (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 |
有关位移运算符示例代码如下:https://www.xnip.cn/vb.net/vb.net_bitshift_operators.html
赋值运算符
VB.Net支持下列赋值运算符:
运算符 | 描述 | 说明 |
---|---|---|
= |
简单赋值操作符,将右侧操作数的值赋给左侧操作数 | 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 |
有关赋值运算符示例代码如下: https://www.xnip.cn/vb.net/vb.net_assignment_operators.html
其他运算符
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())
函数表达式 - 它声明了定义函数
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"))
有关其他运算符示例代码如下: https://www.xnip.cn/vb.net/vb.net_misc_operators.html
VB.Net运算符优先级
运算符优先级决定表达式中术语的分组。这会影响表达式的评估方式。某些运算符的优先级高于其他运算符,则会被优先运算; 例如,乘法运算符比加法运算符具有更高的优先级:
例如,表达式:x = 7 + 3 * 2
; 在这里,x
被赋值为13
,而不是20
,因为运算符*
的优先级高于+
,所以它先乘以3 * 2
,然后加上7
,所以最后结果为:13
。
在这里,优先级最高的操作符出现在表顶部,最低优先级的操作符出现在底部。 在表达式中,更高优先级的运算符将首先被评估(计算)。
运算符 | 描述 |
---|---|
Await |
最高级 |
幂(^ ) |
|
一元标识符和否定(+ ,- ) |
|
乘法和浮点除法(* , / ) |
|
整数除(\ ) |
|
模数运算(Mod ) |
|
算术位移(<< ,>> ) |
|
所有比较运算符(= ,<> ,< ,<= ,> ,>= ,Is ,IsNot ,Like ,TypeOf , ... , Is ) |
|
否定(Not ) |
|
连接(And , AndAlso ) |
|
包含分离(OR ,OrElse ) |
|
异或(XOR ) |
有关运算符优先级代码示例,请参考: https://www.xnip.cn/vb.net/vb.net_operators_precedence.html