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 / A = 1
算術運算符示例:http://www.yiibai.com/vb.net/vb.net\_arithmetic\_operators.html
比較運算符
下表顯示了VB.Net支持的所有比較運算符。假設變量A=10
,變量B=20
,則:
運算符
描述
說明
==
檢查兩個操作數的值是否相等; 如果是,那麼條件爲True
。
(A == B)
結果爲:False
<>
檢查兩個操作數的值是否相等; 如果值不相等,則條件爲True
。
(A <> B)
結果爲:True
>
檢查左操作數的值是否大於右操作數的值; 如果是,則條件爲True
。
(A > B)
結果爲:False
<
檢查左操作數的值是否小於右操作數的值; 如果是,則條件爲True
。
(A < B)
結果爲:True
>=
檢查左操作數的值是否大於等於右操作數的值; 如果是,則條件爲True
。
(A >= B)
結果爲:False
<=
檢查左操作數的值是否小於等於右操作數的值; 如果是,則條件爲True
。
(A <= B)
結果爲:True
除此之外,VB.Net還提供了三個比較運算符,我們將在以後的章節中使用它們。 但是,在這裏給出一個簡短的描述。
-
Is
運算符 - 它比較兩個對象引用變量,並確定兩個對象引用是否引用同一個對象而不執行值比較。 如果object1
和object2
都引用完全相同的對象實例,則結果爲True
; 否則,結果爲False
。 -
IsNot
運算符 - 它還比較兩個對象引用變量,並確定兩個對象引用是否引用不同的對象。 如果object1
和object2
都引用完全相同的對象實例,則結果爲False
; 否則,結果爲True
。 -
Like
運算符 - 它將字符串與模式進行比較。
有關比較運算符的示例代碼:http://www.yiibai.com/vb.net/vb.net\_comparison\_operators.html
邏輯/位運算符
下表顯示了VB.Net支持的所有邏輯運算符。假設變量A = True
,變量B = False
,則:
運算符
描述
說明
And
它是邏輯運算符,也是按位運算符。如果兩個操作數都是:True
,則條件成立。 該運算符不執行短路,即它評估兩個表達式的值。
(A And B)
結果爲:False
Or
它是邏輯以及按位或運算符。如果兩個操作數中的任何一個爲True
,則條件成立。 該運算符不執行短路,即它評估兩個表達式。
(A Or B)
結果爲:True
Not
它是邏輯,也是按位運算符。用於反轉其操作數的邏輯狀態。如果條件成立,那麼邏輯非運算符結果爲:False
。
Not(A And B)
結果爲:True
Xor
它是邏輯,也是按位的邏輯異或運算符。 如果兩個表達式均爲True
或兩個表達式均爲False
,則返回True
; 否則返回False
。 該運算符不執行短路,它總是評估這兩個表達式,並且沒有短路對應。
A Xor B
結果爲:True
AndAlso
這是邏輯AND
運算符,它只適用於布爾數據,並可執行短路。
(A AndAlso B)
結果爲:False
OrElse
這是合乎邏輯的OR
運算符,它只適用於布爾數據,並可執行短路。
(A OrElse B)
結果爲:True
IsFalse
它確定一個表達式是否爲False
。
IsTrue
它確定一個表達式是否爲True
。
有關邏輯/位運算符的示例代碼:http://www.yiibai.com/vb.net/vb.net\_logical\_operators.html
位移運算符
前面已經討論了按位運算符,移位運算符對二進制值執行移位操作。在進入移位運算符之前,讓我們瞭解位操作。
按位運算符處理位並執行逐位操作。 &
,|
和^
的真值表如下:
假設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
二進制或運算符複製一個位,如果它存在於任一操作數。
(A Or B)
結果爲 61
, 也就是:0011 1101
Xor
如果二進制XOR
運算符被設置在一個操作數中,但它們不能同時被二進制XOR
運算符複製。
(A Xor B)
結果爲:49
,也就是:0011 0001
Not
二進制補碼運算符是一元運算符,具有「翻轉」位的作用。
(Not A )
結果爲:-61
,也就是:1100 0011
<<
二進制左移運算符。左操作數值左移由右操作數指定的位數。
A << 2
結果爲:240
, 也就是:1111 0000
>>
二進制右移運算符。左操作數值右移由右操作數指定的位數。
A >> 2
結果爲:15
, 也就是:0000 1111
有關位移運算符示例代碼如下:http://www.yiibai.com/vb.net/vb.net\_bitshift\_operators.html
賦值運算符
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
&=
將一個字符串(String)表達式連接到一個字符串(String)變量或屬性,並將結果賦給變量或屬性。
Str1 &= Str2
等效於 Str1 = Str1 & Str2
有關賦值運算符示例代碼如下: http://www.yiibai.com/vb.net/vb.net\_assignment\_operators.html
其他運算符
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"))
有關其他運算符示例代碼如下: http://www.yiibai.com/vb.net/vb.net\_misc\_operators.html
VB.Net運算符優先級
運算符優先級決定表達式中術語的分組。這會影響表達式的評估方式。某些運算符的優先級高於其他運算符,則會被優先運算; 例如,乘法運算符比加法運算符具有更高的優先級:
例如,表達式:x = 7 + 3 * 2
; 在這裏,x
被賦值爲13
,而不是20
,因爲運算符*
的優先級高於+
,所以它先乘以3 * 2
,然後加上7
,所以最後結果爲:13
。
在這裏,優先級最高的操作符出現在表頂部,最低優先級的操作符出現在底部。 在表達式中,更高優先級的運算符將首先被評估(計算)。
運算符
描述
Await
最高級
冪(^
)
一元標識符和否定(+
,-
)
乘法和浮點除法(*
, /
)
整數除(\
)
模數運算(Mod
)
算術位移(<<
,>>
)
所有比較運算符(=
,<>
,<
,<=
,>
,>=
,Is
,IsNot
,Like
,TypeOf
, ...
, Is
)
否定(Not
)
連接(And
, AndAlso
)
包含分離(OR
,OrElse
)
異或(XOR
)
有關運算符優先級代碼示例,請參考: http://www.yiibai.com/vb.net/vb.net\_operators\_precedence.html