運算符是一個符號,通知編譯器執(zhí)行特定的數學或邏輯操作。 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提供了三個比較運算符,我們將在以后的章節(jié)中使用; 然而,我們在這里給出一個簡短的描述。
1、
Is運算符- 它比較兩個對象引用變量,并確定兩個對象引用是否引用相同的對象,而不執(zhí)行值比較。 如果object1和object2都引用完全相同的對象實例,則結果為True; 否則,結果為False。
2、
IsNot運算符- 它還比較兩個對象引用變量,并確定兩個對象引用是否引用不同的對象。 如果object1和object2都引用完全相同的對象實例,則結果為False; 否則,結果為True。
3、
Like運算符- 它將字符串與模式進行比較。
下表顯示了VB.Net支持的所有邏輯運算符。 假設變量A保持布爾值True,變量B保持布爾值False,則:
運算符 | 描述 | 例 |
---|---|---|
And | 它是邏輯以及按位AND運算符。 如果兩個操作數都為真,則條件為真。 此運算符不執(zhí)行短路,即,它評估兩個表達式。 | (A和B)為假。 |
Or | 它是邏輯以及按位或運算符。 如果兩個操作數中的任何一個為真,則條件為真。 此運算符不執(zhí)行短路,即,它評估兩個表達式。 | (A或B)為真。 |
Not | 它是邏輯以及按位非運算符。 用于反轉其操作數的邏輯狀態(tài)。 如果條件為真,則邏輯非運算符將為假。 | 沒有(A和B)為真。 |
Xor | 它是邏輯以及按位邏輯異或運算符。 如果兩個表達式都為True或兩個表達式都為False,則返回True; 否則返回False。 該運算符不會執(zhí)行短路,它總是評估這兩個表達式,并且沒有該運算符的短路對應。 | 異或B為真。 |
AndAlso | 它是邏輯 AND 運算符。它僅適用于布爾型數據。它 執(zhí)行短路。 | (A AndAlso運算B)為假。 |
OrElse | 它是邏輯或運算符。 它只適用于布爾數據。 它執(zhí)行短路。 | (A OrElse運算B)為真。 |
IsFalse | 它確定表達式是否為假。 | |
IsTrue | 它確定表達式是否為真。 |
我們已經討論了按位運算符。 位移運算符對二進制值執(zhí)行移位操作。 在進入位移運算符之前,讓我們來了解位操作。
按位運算符處理位并執(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 |
假設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表達式中的操作數,以暫停該方法的執(zhí)行,直到等待的任務完成。 | 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")) |
運算符優(yōu)先級確定表達式中的術語分組。 這會影響表達式的計算方式。 某些運算符比其他運算符具有更高的優(yōu)先級; 例如,乘法運算符的優(yōu)先級高于加法運算符:
例如,x = 7 + 3 * 2; 這里,x被分配13,而不是20,因為運算符 *具有比+高的優(yōu)先級,所以它首先乘以3 * 2,然后加到7。
這里,具有最高優(yōu)先級的運算符出現在表的頂部,具有最低優(yōu)先級的運算符出現在底部。 在表達式中,將首先計算較高優(yōu)先級運算符。
運算符 | 優(yōu)先級 |
---|---|
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) | 最低 |
更多建議: