運(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)算符。
下表顯示了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 |
下表顯示了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)行比較。
下表顯示了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á)式是否為真。 |
我們已經(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 |
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)) |
有很少其他重要的操作系統(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")) |
運(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) | 最低 |
更多建議: