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運算符 - 它比較兩個對象引用變量,並確定兩個對象引用是否引用同一個對象而不執行值比較。 如果object1object2都引用完全相同的對象實例,則結果爲True; 否則,結果爲False
  • IsNot運算符 - 它還比較兩個對象引用變量,並確定兩個對象引用是否引用不同的對象。 如果object1object2都引用完全相同的對象實例,則結果爲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

位移運算符

前面已經討論了按位運算符,移位運算符對二進制值執行移位操作。在進入移位運算符之前,讓我們瞭解位操作。

按位運算符處理位並執行逐位操作。 |^的真值表如下:

VB.Net運算符

假設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支持的按位運算符是:AndOr,XorNot。移位運算符分別是:>><<表示左移和右移。

假設變量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)

算術位移(<<>>)

所有比較運算符(=<><<=>>=IsIsNotLikeTypeOf, ..., Is)

否定(Not)

連接(And, AndAlso)

包含分離(OR,OrElse)

異或(XOR)

有關運算符優先級代碼示例,請參考: http://www.yiibai.com/vb.net/vb.net\_operators\_precedence.html