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 MOD A将给出1

比较运算符

下表显示了VB.Net支持的所有比较运算符.假设变量 A 保持10,变量 B 保持20,然后&减去;

运算符描述示例
=检查两个操作数的值是否相等;如果是,则条件成立.(A = B)不成立.
<>检查两个操作数的值是否相等;如果值不相等,则条件变为真.(A<> B)为真.
>检查左操作数的值是否大于右操作数的值;如果是,则条件成立.(A> B)不成立.
<检查左操作数的值是否小于右操作数的值;如果是,则条件变为真.(A< B)为真.
> =检查左操作数的值是否大于或等于右操作数的值;如果是,则条件成立.(A> = B)不成立.
< =检查左操作数的值是否小于或等于右操作数的值;如果是,则条件成立.(A< = B)为真.

除上述内容外,VB.Net还提供了三个比较运算符,我们将在后面的章节中使用它们;但是,我们在这里给出一个简短的描述.

  • 运算符&减去;它比较两个对象引用变量,并确定两个对象引用是否引用同一对象而不执行值比较.如果object1和object2都引用完全相同的对象实例,则结果为 True ;否则,结果为假.

  • IsNot 运算符&减号;它还比较两个对象引用变量,并确定两个对象引用是否引用不同的对象.如果object1和object2都引用完全相同的对象实例,则结果为 False ;否则,结果为真.

  • 喜欢运算符&减号;它将字符串与模式进行比较.

逻辑/按位运算符

下表显示全部VB.Net支持的逻辑运算符.假设变量A保持布尔值True,变量B保持布尔值False,然后 :

运算符描述示例
它是逻辑和按位AND运算符.如果两个操作数都为真,则条件成立.此运算符不执行短路,即它会计算两个表达式.(A和B)为False.
这是逻辑运算符和按位运算符.如果两个操作数中的任何一个为真,则条件成立.此运算符不执行短路,即它计算两个表达式.(A或B)为True.
它是逻辑以及按位NOT运算符.用于反转其操作数的逻辑状态.如果条件为真,则Logical NOT运算符将为false.Not(A和B)为True.
Xor它是逻辑和按位逻辑异或运算符.如果两个表达式都为True或两个表达式都为False,则返回True;否则返回False.该运算符不执行短路,它总是计算两个表达式,并且没有此运算符的短路对应.A Xor B为True.
AndAlso这是逻辑AND运算符.它仅适用于布尔数据.它执行短路.(A AndAso B)为假.
OrElse它是逻辑OR运算符.它仅适用于布尔数据.它执行短路.(A OrElse B)为真.
IsFalse它确定表达式是否为假.
IsTrue它确定表达式是否为True.

位移运算符

我们已经讨论过按位运算符.位移操作符对二进制值执行移位操作.在进入位移运算符之前,让我们理解位操作.

按位运算符处理位并执行逐位运算. &,|和^的真值表如下 :

pqp& qp | qp ^ q
00000
01011
11110
10011

假设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支持的Bitwise运算符是And,Or,Xor和Not.位移算子是>>和<<分别为左移和右移.

假设变量A持有60而变量B持有13,则为 :

运算符Description示例
如果两个操作数都存在,则按位AND运算符会将一个位复制到结果中.(A AND B)将给出12,即0000 1100
二进制OR运算符如果存在于任一操作数中,则复制一点.(A或B)将给出61,即0011 1101
Xor二进制XOR运算符如果在一个位置设置,则复制该位操作数但不是两者.(A Xor B)将给出49,即0011 0001
二元一元补码运算符是一元的,具有'翻转'位的效果.(非A)将给出-61,由于带符号的二进制数,它是2的补码形式的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赋值运算符,它从左操作数中减去右操作数并将结果赋给左操作数C  -  = A相当于C = C  -  A
* =乘以AND赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数C * = A等于C = C * A
/=除以AND赋值运算符,它除以左操作数和右操作数并将结果赋给左操作数(浮点除法)C/= A相当于C = C/A
\ =除以AND赋值运算符,它将左操作数除以右操作数和将结果赋给左操作数(整数除法)C \ = A相当于C = C \A
^ =指数和赋值运算符.它将左操作数提升为右操作数的幂,并将结果赋给左操作数.C ^ = A相当于C = C ^ A
<< =左移AND赋值运算符C<< = 2与C = C<< 2
>> =右移AND赋值运算符C>> = 2与C = C>>相同2
& =连接字符串表达式到String变量或属性并将结果赋给变量或属性.

Str1& = Str2与

Str1相同= Str1& Str2

其他运营商

那里是VB.Net支持的其他一些重要的运算符.

运算符描述示例
AddressOf返回过程的地址.
 
 AddHandler Button1.Click,
 AddressOf Button1_Click
等待它应用于异步方法或lambda表达式中的操作数,以暂停方法的执行,直到等待的任务完成.
 
昏暗的结果因为res 
 = Await AsyncMethodThatReturnsResult()
 Await AsyncMethod()
GetType它返回指定类型的Type对象. Type对象提供有关类型的信息,例如其属性,方法和事件.
 
 MsgBox(GetType(整数).ToString())
函数表达式它声明了定义函数lambda表达式的参数和代码.
 
 Dim add5 = Function(num As 
 Integer)num + 5 
'打印10 
 Console.WriteLine(add5(5))
如果它使用短路评估有条件地返回两个值中的一个.可以使用三个参数或两个参数调用If运算符.
 
 Dim num = 5 
 Console.WriteLine(If(num> = 0,
"Positive","Negative"))

运算符优先于VB.Net

运算符优先级决定表达式中的术语分组.这会影响表达式的计算方式.某些运营商的优先级高于其他运营商;例如,乘法运算符的优先级高于加法运算符 :

例如,x = 7 + 3 * 2;这里,x被赋值为13而不是20,因为operator *的优先级高于+,所以它首先乘以3 * 2然后加到7中.

这里,运算符最高优先级显示在表格的顶部,最低的优先级显示在底部.在表达式中,将首先评估更高优先级的运算符.

OperatorPrecedence
Await最高
指数(^ )
一元身份和否定(+, - )
乘法和浮点除法(*,/)
整数除法(\)
模数算术(Mod)
加法和减法(+, - )
算术位移(<<> && gt;)
所有比较运算符(=,<> ,<,< =,>,> =,Is,IsNot,Like,TypeOf ...是)
否定(不)
Conjunction(And,AndAlso)
Inclusive disjunction(或者,OrElse)
Exclusive disjunction(Xor)最低