IsTrue — Operator (Visual Basic)
Określa, czy wyrażenie ma wartość True
.
Nie można wywołać IsTrue
jawnie kodu, ale kompilator języka Visual Basic może używać go do generowania kodu z OrElse
klauzul. Jeśli zdefiniujesz klasę lub strukturę, a następnie użyjesz zmiennej tego typu w klauzuli OrElse
, musisz zdefiniować IsTrue
dla tej klasy lub struktury.
Kompilator traktuje IsTrue
operatory i IsFalse
jako dopasowaną parę. Oznacza to, że jeśli zdefiniujesz jedną z nich, musisz również zdefiniować drugą.
Użycie obiektu IsTrue przez kompilator
Po zdefiniowaniu klasy lub struktury można użyć zmiennej tego typu w For
instrukcji , If
, Else If
lub While
w klauzuli When
. Jeśli to zrobisz, kompilator wymaga operatora, który konwertuje typ na Boolean
wartość, aby mógł przetestować warunek. Wyszukuje odpowiedni operator w następującej kolejności:
Operator konwersji rozszerzającej z klasy lub struktury na
Boolean
.Operator konwersji rozszerzającej z klasy lub struktury na
Boolean?
.Operator
IsTrue
w klasie lub strukturze.Konwersja zawężająca do
Boolean?
elementu nie obejmuje konwersji zBoolean
naBoolean?
.Operator konwersji zawężającej z klasy lub struktury do
Boolean
klasy .
Jeśli nie zdefiniowano żadnej konwersji na Boolean
operator lub IsTrue
operatora, kompilator sygnalizuje błąd.
Uwaga
IsTrue
Operator może być przeciążony, co oznacza, że klasa lub struktura może ponownie zdefiniować jego zachowanie, gdy operand ma typ tej klasy lub struktury. Jeśli kod używa tego operatora w takiej klasie lub strukturze, upewnij się, że rozumiesz jego ponownie zdefiniowane zachowanie. Aby uzyskać więcej informacji, zobacz Procedury operatorów.
Przykład
Poniższy przykład kodu definiuje konspekt struktury zawierającej definicje operatorów IsFalse
i IsTrue
.
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