IsTrue 运算符 (Visual Basic)

确定表达式是否为 True

不能在代码中显式调用 IsTrue,但 Visual Basic 编译器可以使用它从 OrElse 子句生成代码。 如果定义类或结构,然后在 OrElse 子句中使用该类型的变量,则必须对该类或结构上的 IsTrue 进行定义。

编译器将 IsTrueIsFalse 运算符视为 匹配的运算符。 这意味着,如果定义其中一个,则还必须定义另一个。

IsTrue 的编译器使用

定义类或结构后,可以在 ForIfElse IfWhile 语句或 When 子句中使用该类型的变量。 如果这样做,编译器需要一个运算符,该运算符将类型转换为值 Boolean ,以便它可以测试条件。 它按以下顺序搜索合适的运算符:

  1. 从类或结构到 Boolean 的扩大转换运算符。

  2. 从类或结构到 Boolean? 的扩大转换运算符。

  3. 类 或结构上的 IsTrue 运算符。

  4. Boolean? 的收缩转换不涉及从 BooleanBoolean? 的转换。

  5. 从类或结构到 Boolean 的扩大转换运算符。

如果尚未定义到 BooleanIsTrue 运算符的任何转换,编译器会发出错误信号。

注意

IsTrue 运算符可以重载,这意味着当操作数具有某一类或结构的类型时,该类或结构可以重新定义其行为。 如果你的代码在这种类或结构上使用此运算符,请确保了解其重新定义的行为。 有关详细信息,请参阅 Operator Procedures

示例

下面的代码示例定义了结构大纲,该结构包括 IsFalseIsTrue 运算符的定义。

Public Structure p
    Dim a As Double
    Public Shared Operator IsFalse(ByVal w As p) As Boolean
        Dim b As Boolean
        ' Insert code to calculate IsFalse of w.
        Return b
    End Operator
    Public Shared Operator IsTrue(ByVal w As p) As Boolean
        Dim b As Boolean
        ' Insert code to calculate IsTrue of w.
        Return b
    End Operator
End Structure

另请参阅