以下是在 Visual Basic 中定義的比較運算符。
< 運算子
<= 運算子
> 運算子
>= 運算子
= 運算子
<> 運算子
這些運算符會比較兩個表達式,以判斷它們是否相等,如果不是,它們有何差異。
Is、 IsNot、 和 Like 會在個別的說明頁面上詳細討論。 此頁面上會詳細討論關係型比較運算元。
語法
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
組件
result
必須的。
Boolean值,表示比較的結果。
expression1、expression2
必須的。 任何表達式。
comparisonoperator
必須的。 任何關係型比較運算符。
object1、object2
必須的。 任何參考物件名稱。
string
必須的。 任何 String 表達式。
pattern
必須的。 任何 String 表達式或字元範圍。
備註
下表包含關係比較運算符的清單,以及判斷 為 resultTrue 或 False的條件。
| 操作員 |
True 如果 |
False 如果 |
|---|---|---|
< (小於) |
expression1 < expression2 |
expression1
>= expression2 |
<= (小於或等於) |
expression1
<= expression2 |
expression1 > expression2 |
> (大於) |
expression1 > expression2 |
expression1
<= expression2 |
>= (大於或等於) |
expression1
>= expression2 |
expression1 < expression2 |
= (等於) |
expression1 = expression2 |
expression1 <> expression2 |
<> (不等於) |
expression1 <> expression2 |
expression1 = expression2 |
備註
= 運算子也會當做指派運算子使用。
Is運算子、IsNot運算子和運算元具有Like與上表運算子不同的特定比較功能。
比較數位
當您比較 類型的表示式與其中一種類型SingleDouble時,表示式Single會Double轉換成 。 此行為與 Visual Basic 6 中找到的行為相反。
同樣地,當您比較 類型的Decimal運算式與 類型SingleDouble或 的運算式時,表示式Decimal會Single轉換成 或 Double。 對於 Decimal 表達式,任何小於 1E-28 的分數值都可能會遺失。 這類小數值遺失可能會導致兩個值在不是時比較為相等。 基於這個理由,您應該小心使用等號 (=) 來比較兩個浮點變數。 測試兩個數字之間差異的絕對值是否小於小可接受的容錯,比較安全。
浮點不精確度
當您使用浮點數時,請記住,它們不一定在記憶體中具有精確的表示法。 這可能會導致特定作業產生的非預期結果,例如值比較和 Mod運算元。 如需詳細資訊,請參閱 針對數據類型進行疑難解答。
比較字串
當您比較字串時,會根據字串的字母排序順序來評估字串表達式,這取決於 Option Compare 設定。
Option Compare Binary 根據衍生自字元內部二進位表示法的排序順序來比較字串。 排序順序是由代碼頁決定。 下列範例顯示一般二進位排序順序。
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text 根據應用程式地區設定所決定的不區分大小寫的文字排序順序來比較字串。 當您在上述範例中設定 Option Compare Text 及排序字元時,會套用下列文字排序順序:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
地區設定相依性
當您設定 Option Compare Text時,字串比較的結果可能會取決於應用程式執行所在的地區設定。 兩個字元在一個地區設定中可能會比較為相等,但在另一個地區設定中則不相等。 如果您使用字串比較來進行重要決策,例如是否要接受嘗試登入,您應該會收到地區設定敏感度警示。 請考慮設定 Option Compare Binary 或呼叫 StrComp,這會考慮地區設定。
使用關係比較運算符進行無類型程序設計
不允許在下Option Strict On使用關係比較運算符與Object表達式。 當 Option Strict 是 Off時,或 expression1expression2 是 Object 表達式,運行時間類型會決定其比較方式。 下表顯示表達式的比較方式,以及比較的結果,視作數的運行時間類型而定。
| 如果作數為 | 比較為 |
|---|---|
雙 String |
根據字串排序特性排序比較。 |
| 兩個數值 | 轉換成 Double的物件,數值比較。 |
一個數值和一個 String |
String會轉換成 Double ,並執行數值比較。
String如果 無法轉換成 Double,InvalidCastException則會擲回 。 |
或兩者都是以外的參考型別 String |
擲回 。InvalidCastException |
數值比較會將 視為 Nothing 0。 字串比較會將 視為 Nothing"" (空字串)。
重載
關係比較運算子 (<. 、 <=、 >=>=、 、 <>) 可以多載,這表示當作數具有該類別或結構的類型時,類別或結構可以重新定義其行為。 如果您的程式代碼在這類類別或結構上使用上述任何運算符,請務必瞭解重新定義的行為。 如需詳細資訊,請參閱 運算符程式。
請注意, = 運算符 只能多載為關係比較運算符,而不是指派運算符。
範例
下列範例顯示關係型比較運算子的各種用法,您用來比較表達式。 關係比較運算符會傳回 Boolean 結果,代表狀態表示式是否評估為 True。 當您將 > 和 < 運算符套用至字串時,會使用字串的一般字母排序順序進行比較。 此順序可能相依於您的地區設定。 排序是否區分大小寫取決於 [選項比較 ] 設定。
Dim x As testClass
Dim y As New testClass()
x = y
If x Is y Then
' Insert code to run if x and y point to the same instance.
End If
在上述範例中,第一個比較會 False 傳回 ,而其餘的比較會傳回 True。