比较运算符比较两个表达式并返回一个 Boolean
表示其值关系的值。 有用于比较数值的运算符、用于比较字符串的运算符和用于比较对象的运算符。 此处将讨论所有三种类型的运算符。
比较数值
Visual Basic 使用六个数值比较运算符比较数值。 每个运算符都采用计算结果为数值的两个表达式作为操作数。 下表列出了运算符,并显示了每个运算符的示例。
操作员 | 测试条件 | 例子 |
---|---|---|
= (相等) |
第一个表达式的值是否等于第二个表达式的值? |
23
=
33 ' False
23
=
23 ' True
23
=
12 ' False
|
<> (不平等) |
第一个表达式的值是否与第二个表达式的值不相等? |
23
<>
33 ' True
23
<>
23 ' False
23
<>
12 ' True
|
< (小于) |
第一个表达式的值是否小于第二个表达式的值? |
23
<
33 ' True
23
<
23 ' False
23
<
12 ' False
|
> (大于) |
第一个表达式的值是否大于第二个表达式的值? |
23
>
33 ' False
23
>
23 ' False
23
>
12 ' True
|
<= (小于或等于) |
第一个表达式的值是否小于或等于第二个表达式的值? |
23
<=
33 ' True
23
<=
23 ' True
23
<=
12 ' False
|
>= (大于或等于) |
第一个表达式的值是否大于或等于第二个表达式的值? |
23
>=
33 ' False
23
>=
23 ' True
23
>=
12 ' True
|
比较字符串
Visual Basic 使用 Like 运算符 和数值比较运算符比较字符串。 使用 Like
运算符可以指定模式。 然后,字符串与模式进行比较,如果匹配,则结果为 True
。 否则,结果为 False
。 数值运算符允许你根据它们的排序顺序来比较 String
值,如以下示例所示。
"73" < "9"
' The result of the preceding comparison is True.
前面的示例中的结果是 True
,第一个字符串中的第一个字符在第二个字符串中的第一个字符之前排序。 如果第一个字符相等,比较将继续到两个字符串中的下一个字符,依此类推。 还可以使用相等运算符测试字符串的相等性,如以下示例所示。
"734" = "734"
' The result of the preceding comparison is True.
如果一个字符串是另一个字符串的前缀,例如“aa”和“aaa”,则较长的字符串被视为大于较短的字符串。 下面的示例对此进行了演示。
"aaa" > "aa"
' The result of the preceding comparison is True.
排序顺序基于二进制比较或文本比较,具体取决于设置 Option Compare
。 有关详细信息,请参阅 Option Compare 语句。
比较对象
Visual Basic 将两个对象引用变量与 Is 运算符 和 IsNot 运算符进行比较。 可以使用这两个运算符之一来确定两个引用变量是否引用同一对象实例。 下面的示例对此进行了演示。
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
在前面的示例中, x Is y
计算结果为 True
,因为两个变量都引用同一实例。 将此结果与以下示例进行对比。
Dim x As New customer()
Dim y As New customer()
If x Is y Then
' Insert code to run if x and y point to the same instance.
End If
在前面的示例中, x Is y
计算结果为 False
:尽管变量引用同一类型的对象,但它们引用该类型的不同实例。
如果要测试不指向同一实例的两个对象, IsNot
运算符允许避免语法笨拙的组合 Not
和 Is
。 下面的示例对此进行了演示。
Dim a As New classA()
Dim b As New classB()
If a IsNot b Then
' Insert code to run if a and b point to different instances.
End If
在前面的示例中, If a IsNot b
等效于 If Not a Is b
.
比较对象类型
可以使用 TypeOf
...Is
表达式来测试对象是否为特定类型。 语法如下所示:
TypeOf <objectexpression> Is <typename>
当 typename
指定接口类型时,如果对象实现接口类型,那么 TypeOf
...Is
表达式将返回 True
。 当 typename
类类型为类类型时,如果对象是指定类的实例或派生自指定类的类的实例,则表达式返回 True
。 下面的示例对此进行了演示。
Dim x As System.Windows.Forms.Button
x = New System.Windows.Forms.Button()
If TypeOf x Is System.Windows.Forms.Control Then
' Insert code to run if x is of type System.Windows.Forms.Control.
End If
在前面的示例中,TypeOf x Is Control
表达式的计算结果为 True
,因为 x
的类型为 Button
,继承自 Control
。
有关详细信息,请参阅 TypeOf 运算符。