VB.Net - 運(yùn)算符

2022-07-01 15:20 更新

運(yùn)算符是一個(gè)符號(hào),通知編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作。 VB.Net豐富的內(nèi)置運(yùn)算符,并提供以下類型的常用運(yùn)算符:

  • 算術(shù)運(yùn)算符

  • 比較運(yùn)算符

  • 邏輯/位運(yùn)算符

  • 位移位運(yùn)算符

  • 賦值運(yùn)算符

  • 其他運(yùn)算符

本教程將介紹最常用的運(yùn)算符。

算術(shù)運(yùn)算符

下表顯示了VB.Net支持的所有算術(shù)運(yùn)算符。 假設(shè)變量A保持2,變量B保持7,則:

顯示示例

運(yùn)算符 描述
^

將一個(gè)操作數(shù)作為為另一個(gè)的冪

B^A 結(jié)果為 49
+

添加兩個(gè)操作數(shù)s

A + B 結(jié)果為9
- 從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù) A - B 結(jié)果為 -5
*

將兩個(gè)操作數(shù)相乘

A * B 結(jié)果為 14
/ 將一個(gè)操作數(shù)除以另一個(gè)操作數(shù),并返回一個(gè)浮點(diǎn)結(jié)果 B / A 結(jié)果為 3.5
\ 將一個(gè)操作數(shù)除以另一個(gè)操作數(shù),并返回一個(gè)整數(shù)結(jié)果 B \ A 結(jié)果為 3
MOD 模數(shù)運(yùn)算符和整數(shù)除法后的余數(shù) B MOD A 結(jié)果為 1

比較運(yùn)算符

下表顯示了VB.Net支持的所有比較運(yùn)算符。 假設(shè)變量A保持10,變量B保持20,則:

顯示示例

運(yùn)算符 描述
= 檢查兩個(gè)操作數(shù)的值是否相等; 如果是,則結(jié)果為真。 (A = B)為假。

<>

檢查兩個(gè)操作數(shù)的值是否相等; 如果值不相等,則結(jié)果為真。

(A<>B)為真。
> 檢查左操作數(shù)的值是否大于右操作數(shù)的值; 如果是,則結(jié)果為真。 (A> B)為假。
< 檢查左操作數(shù)的值是否小于右操作數(shù)的值; 如果是,則結(jié)果為真。 (A <B)為真。
> = 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值; 如果是,則結(jié)果為真。 (A> = B)為假。
<= 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值; 如果是,則結(jié)果為真。 (A <= B)為真。

除了上述情況外,VB.Net提供了三個(gè)比較運(yùn)算符,我們將在以后的章節(jié)中使用; 然而,我們?cè)谶@里給出一個(gè)簡(jiǎn)短的描述。


1、

Is運(yùn)算符

- 它比較兩個(gè)對(duì)象引用變量,并確定兩個(gè)對(duì)象引用是否引用相同的對(duì)象,而不執(zhí)行值比較。 如果object1和object2都引用完全相同的對(duì)象實(shí)例,則結(jié)果為True; 否則,結(jié)果為False。


2、

IsNot運(yùn)算符

- 它還比較兩個(gè)對(duì)象引用變量,并確定兩個(gè)對(duì)象引用是否引用不同的對(duì)象。 如果object1和object2都引用完全相同的對(duì)象實(shí)例,則結(jié)果為False; 否則,結(jié)果為True。


3、

Like運(yùn)算符

- 它將字符串與模式進(jìn)行比較。

邏輯/位運(yùn)算符

下表顯示了VB.Net支持的所有邏輯運(yùn)算符。 假設(shè)變量A保持布爾值True,變量B保持布爾值False,則:

顯示示例

運(yùn)算符 描述
And 它是邏輯以及按位AND運(yùn)算符。 如果兩個(gè)操作數(shù)都為真,則條件為真。 此運(yùn)算符不執(zhí)行短路,即,它評(píng)估兩個(gè)表達(dá)式。 (A和B)為假。
Or 它是邏輯以及按位或運(yùn)算符。 如果兩個(gè)操作數(shù)中的任何一個(gè)為真,則條件為真。 此運(yùn)算符不執(zhí)行短路,即,它評(píng)估兩個(gè)表達(dá)式。 (A或B)為真。
Not 它是邏輯以及按位非運(yùn)算符。 用于反轉(zhuǎn)其操作數(shù)的邏輯狀態(tài)。 如果條件為真,則邏輯非運(yùn)算符將為假。 沒(méi)有(A和B)為真。
Xor 它是邏輯以及按位邏輯異或運(yùn)算符。 如果兩個(gè)表達(dá)式都為True或兩個(gè)表達(dá)式都為False,則返回True; 否則返回False。 該運(yùn)算符不會(huì)執(zhí)行短路,它總是評(píng)估這兩個(gè)表達(dá)式,并且沒(méi)有該運(yùn)算符的短路對(duì)應(yīng)。 異或B為真。
AndAlso 邏輯  AND 運(yùn)算符。適用布爾型數(shù)據(jù)。 執(zhí)行短路 (A AndAlso運(yùn)算B)為假。
OrElse 它是邏輯或運(yùn)算符。 它只適用于布爾數(shù)據(jù)。 它執(zhí)行短路。 (A OrElse運(yùn)算B)為真。
IsFalse 它確定表達(dá)式是否為假。  
IsTrue 它確定表達(dá)式是否為真。  

位移運(yùn)算符

我們已經(jīng)討論了按位運(yùn)算符。 位移運(yùn)算符對(duì)二進(jìn)制值執(zhí)行移位操作。 在進(jìn)入位移運(yùn)算符之前,讓我們來(lái)了解位操作。


按位運(yùn)算符處理位并執(zhí)行逐位操作。 &,|和^的真值表如下:

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

假設(shè)A = 60; 和B = 13; 現(xiàn)在的二進(jìn)制格式,他們將如下:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
?A = 1100 0011

我們已經(jīng)看到VB.Net支持的位運(yùn)算符是And,Or,Xor和Not。 位移位算子分別是用于左移和右移的>>和<<。

假設(shè)變量A保持60,變量B保持13,則:

顯示示例

運(yùn)算符描述示例
And如果兩個(gè)操作數(shù)都存在,則按位AND運(yùn)算符將一個(gè)位復(fù)制到結(jié)果。(A AND B) 結(jié)果為 12, 即 0000 1100
Or二進(jìn)制OR運(yùn)算符復(fù)制一個(gè)位,如果它存在于任一操作數(shù)。(A Or B) 結(jié)果為 61, 即0011 1101
Xor二進(jìn)制XOR運(yùn)算符復(fù)制該位,如果它在一個(gè)操作數(shù)中設(shè)置,但不是兩個(gè)操作數(shù)。(A Xor B) 結(jié)果為 49, 即 0011 0001
Not二進(jìn)制補(bǔ)碼運(yùn)算符是一元的,具有“翻轉(zhuǎn)”位的效果。(Not A ) 結(jié)果為 -61,即1100 0011,以補(bǔ)碼形式表示,因?yàn)槠錇橛蟹?hào)二進(jìn)制數(shù)。

<<二進(jìn)制左移位運(yùn)算符。 左操作數(shù)值向左移動(dòng)由右操作數(shù)指定的位數(shù)。A << 2結(jié)果為240, 即 1111 0000
>>二進(jìn)制右移運(yùn)算符。 左操作數(shù)值向右移動(dòng)由右操作數(shù)指定的位數(shù)。A >> 2 結(jié)果為 15, 即 0000 1111

賦值運(yùn)算符

VB.Net支持以下賦值運(yùn)算符:

顯示示例

運(yùn)算符 描述
=

簡(jiǎn)單賦值操作符,將值從右側(cè)操作數(shù)分配給左側(cè)操作數(shù)

C = A + B A + B將賦值為C
+ = 添加AND賦值運(yùn)算符,向左操作數(shù)添加右操作數(shù),并將結(jié)果賦值給左操作數(shù) C + = A等于C = C + A
- = 減法AND賦值運(yùn)算符,它從左操作數(shù)中減去右操作數(shù),并將結(jié)果賦值給左操作數(shù) ? - = A等于C = C - A
* = 乘法AND賦值運(yùn)算符,它將右操作數(shù)與左操作數(shù)相乘,并將結(jié)果賦值給左操作數(shù) C * = A等于C = C * A
/ = 除法AND賦值運(yùn)算符,它用右操作數(shù)劃分左操作數(shù),并將結(jié)果分配給左操作數(shù)(浮點(diǎn)除法) C / = A等于C = C / A
= 除法AND賦值運(yùn)算符,它用右操作數(shù)劃分左操作數(shù),并將結(jié)果分配給左操作數(shù)(整數(shù)除法) ? = A等于C = C A
^ = 指數(shù)和賦值運(yùn)算符。 它將左操作數(shù)提升為右操作數(shù)的冪,并將結(jié)果分配給左操作數(shù)。 C ^ = A等于C = C ^ A
<< = 左移AND賦值運(yùn)算符 C語(yǔ)言的<< = 2是同C = C << 2
>> = 右移AND賦值運(yùn)算符 C >> = 2 >> 2同C = C
&= 將String表達(dá)式連接到String變量或?qū)傩?,并將結(jié)果分配給變量或?qū)傩浴?/td>

STR1&= STR2 等價(jià)于

STR1 = STR1 + STR2(這里的加表示把兩個(gè)字符串連接起來(lái))

其他運(yùn)算符

有很少其他重要的操作系統(tǒng)支持VB.Net。

顯示示例

運(yùn)算符 描述
AddressOf 返回過(guò)程的地址。
AddHandler Button1.Click,
AddressOf Button1_Click
Await它應(yīng)用于異步方法或lambda表達(dá)式中的操作數(shù),以暫停該方法的執(zhí)行,直到等待的任務(wù)完成。
Dim result As res
= Await AsyncMethodThatReturnsResult()
Await AsyncMethod()
GetType它返回指定類型的Type對(duì)象。 Type對(duì)象提供有關(guān)類型的信息,例如其屬性,方法和事件。
MsgBox(GetType(Integer).ToString())
Function Expression 它聲明定義函數(shù)lambda表達(dá)式的參數(shù)和代碼。
Dim add5 = Function(num As
 Integer) num + 5
'prints 10
Console.WriteLine(add5(5))
If 它使用短路評(píng)估有條件地返回兩個(gè)值之一。 可以使用三個(gè)參數(shù)或兩個(gè)參數(shù)調(diào)用If運(yùn)算符。
Dim num = 5
Console.WriteLine(If(num >= 0,
"Positive", "Negative"))

VB.Net中的運(yùn)算符優(yōu)先級(jí)

運(yùn)算符優(yōu)先級(jí)確定表達(dá)式中的術(shù)語(yǔ)分組。 這會(huì)影響表達(dá)式的計(jì)算方式。 某些運(yùn)算符比其他運(yùn)算符具有更高的優(yōu)先級(jí); 例如,乘法運(yùn)算符的優(yōu)先級(jí)高于加法運(yùn)算符:
例如,x = 7 + 3 * 2; 這里,x被分配13,而不是20,因?yàn)檫\(yùn)算符 *具有比+高的優(yōu)先級(jí),所以它首先乘以3 * 2,然后加到7。
這里,具有最高優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在表的頂部,具有最低優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在底部。 在表達(dá)式中,將首先計(jì)算較高優(yōu)先級(jí)運(yùn)算符。

顯示示例

運(yùn)算符 優(yōu)先級(jí)
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) 最低


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)