IsTrue Operator (Visual Basic)
Determines whether an expression is True
.
You cannot call IsTrue
explicitly in your code, but the Visual Basic compiler can use it to generate code from OrElse
clauses. If you define a class or structure and then use a variable of that type in an OrElse
clause, you must define IsTrue
on that class or structure.
The compiler considers the IsTrue
and IsFalse
operators as a matched pair. This means that if you define one of them, you must also define the other one.
Compiler Use of IsTrue
When you have defined a class or structure, you can use a variable of that type in a For
, If
, Else If
, or While
statement, or in a When
clause. If you do this, the compiler requires an operator that converts your type into a Boolean
value so it can test a condition. It searches for a suitable operator in the following order:
A widening conversion operator from your class or structure to
Boolean
.A widening conversion operator from your class or structure to
Boolean?
.The
IsTrue
operator on your class or structure.A narrowing conversion to
Boolean?
that does not involve a conversion fromBoolean
toBoolean?
.A narrowing conversion operator from your class or structure to
Boolean
.
If you have not defined any conversion to Boolean
or an IsTrue
operator, the compiler signals an error.
Note
The IsTrue
operator can be overloaded, which means that a class or structure can redefine its behavior when its operand has the type of that class or structure. If your code uses this operator on such a class or structure, be sure you understand its redefined behavior. For more information, see Operator Procedures.
Example
The following code example defines the outline of a structure that includes definitions for the IsFalse
and IsTrue
operators.
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