阅读(3720) (15)

VB.Net - 运算符

2016-12-12 14:26:47 更新

运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 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) 最低