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 還提供三個比較運算子,我們將在後面的章節中使用;但是,這裡簡要介紹一下。

  • Is 運算子 - 它比較兩個物件引用變數,並確定兩個物件引用是否指向同一個物件,而無需進行值比較。如果 object1 和 object2 都引用完全相同的物件例項,則結果為True;否則,結果為 False。

  • IsNot 運算子 - 它也比較兩個物件引用變數,並確定兩個物件引用是否指向不同的物件。如果 object1 和 object2 都引用完全相同的物件例項,則結果為False;否則,結果為 True。

  • Like 運算子 - 它將字串與模式進行比較。

邏輯/位運算子

下表顯示了 VB.Net 支援的所有邏輯運算子。假設變數 A 的布林值為 True,變數 B 的布林值為 False,則:

顯示示例

運算子 描述 示例
And 它是邏輯 AND 運算子也是位 AND 運算子。如果兩個運算元都為真,則條件為真。此運算子不執行短路,即它會評估兩個表示式。 (A And B) 為假。
Or 它是邏輯 OR 運算子也是位 OR 運算子。如果兩個運算元中任何一個為真,則條件為真。此運算子不執行短路,即它會評估兩個表示式。 (A Or B) 為真。
Not 它是邏輯 NOT 運算子也是位 NOT 運算子。用於反轉其運算元的邏輯狀態。如果條件為真,則邏輯 NOT 運算子將使其為假。 Not(A And B) 為真。
Xor 它是邏輯異或運算子也是位異或運算子。如果兩個表示式都為真或都為假,則返回 True;否則返回 False。此運算子不執行短路,它始終評估兩個表示式,並且此運算子沒有短路對應項。 A Xor B 為真。
AndAlso 它是邏輯 AND 運算子。它僅對布林資料有效。它執行短路。 (A AndAlso B) 為假。
OrElse 它是邏輯 OR 運算子。它僅對布林資料有效。它執行短路。 (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
+= 加法賦值運算子,它將右側運算元新增到左側運算元並將結果賦給左側運算元 C += A 等效於 C = C + A
-= 減法賦值運算子,它從左側運算元中減去右側運算元並將結果賦給左側運算元 C -= A 等效於 C = C - A
*= 乘法賦值運算子,它將右側運算元乘以左側運算元並將結果賦給左側運算元 C *= A 等效於 C = C * A
/= 除法賦值運算子,它將左側運算元除以右側運算元並將結果賦給左側運算元(浮點除法) C /= A 等效於 C = C / A
\= 除法賦值運算子,它將左側運算元除以右側運算元並將結果賦給左側運算元(整數除法) C \= A 等效於 C = C \A
^= 冪運算和賦值運算子。它將左側運算元提升到右側運算元的冪並將結果賦給左側運算元。 C^=A 等效於 C = C ^ A
<<= 左移賦值運算子 C <<= 2 等同於 C = C << 2
>>= 右移賦值運算子 C >>= 2 等同於 C = C >> 2
&= 將字串表示式連線到字串變數或屬性並將結果賦給變數或屬性。

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())
函式表示式 它宣告定義函式 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 最高
冪運算 (^)
一元標識和否定 (+, -)
乘法和浮點除法 (*, /)
整數除法 (\)
模運算 (Mod)
加法和減法 (+, -)
算術位移 (<<, >>)
所有比較運算子 (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf...Is)
否定 (Not)
合取 (And, AndAlso)
包含析取 (Or, OrElse)
異或 (Xor) 最低
廣告
© . All rights reserved.