Operátory porovnání v jazyce Visual Basic
Relační operátory porovnávají dva výrazy a vrací Boolean
hodnotu, která představuje vztah jejich hodnot. Existují operátory pro porovnávání číselných hodnot, operátorů pro porovnávání řetězců a operátorů pro porovnávání objektů. Zde jsou popsány všechny tři typy operátorů.
Porovnání číselných hodnot
Visual Basic porovnává číselné hodnoty pomocí šesti číselných relačních operátorů. Každý operátor přebírá jako operandy dva výrazy, které se vyhodnocují jako číselné hodnoty. Následující tabulka uvádí operátory a uvádí příklady jednotlivých operátorů.
Operátor | Testovaná podmínka | Příklady |
---|---|---|
= (Rovnost) |
Je hodnota prvního výrazu rovna hodnotě druhé? | 23 = 33 ' False 23 = 23 ' True 23 = 12 ' False |
<> (Nerovnost) |
Je hodnota prvního výrazu nerovnaná s hodnotou druhé? | 23 <> 33 ' True 23 <> 23 ' False 23 <> 12 ' True |
< (Menší než) |
Je hodnota prvního výrazu menší než hodnota druhého výrazu? | 23 < 33 ' True 23 < 23 ' False 23 < 12 ' False |
> (Větší než) |
Je hodnota prvního výrazu větší než hodnota sekundy? | 23 > 33 ' False 23 > 23 ' False 23 > 12 ' True |
<= (Menší než nebo rovno) |
Je hodnota prvního výrazu menší nebo rovna hodnotě druhé? | 23 <= 33 ' True 23 <= 23 ' True 23 <= 12 ' False |
>= (Větší než nebo rovno) |
Je hodnota prvního výrazu větší nebo rovna hodnotě druhé? | 23 >= 33 ' False 23 >= 23 ' True 23 >= 12 ' True |
Porovnávání řetězců
Visual Basic porovnává řetězce pomocí operátoru Like a číselných relačních operátorů. Operátor Like
umožňuje zadat vzor. Řetězec se pak porovná se vzorem a pokud se shoduje, výsledek je True
. V opačném případě je False
výsledek . Číselné operátory umožňují porovnávat String
hodnoty na základě jejich pořadí řazení, jak ukazuje následující příklad.
"73" < "9"
' The result of the preceding comparison is True.
Výsledkem v předchozím příkladu je True
to, že první znak v prvním řetězci seřadí před prvním znakem ve druhém řetězci. Pokud by byly první znaky stejné, porovnání by pokračovalo k dalšímu znaku v obou řetězcích atd. Můžete také otestovat rovnost řetězců pomocí operátoru rovnosti, jak ukazuje následující příklad.
"734" = "734"
' The result of the preceding comparison is True.
Pokud je jeden řetězec předponou jiného, například "aaa" a "aaa", považuje se delší řetězec za větší než kratší řetězec. Toto dokládá následující příklad.
"aaa" > "aa"
' The result of the preceding comparison is True.
Pořadí řazení je založeno na binárním porovnání nebo textovém porovnání v závislosti na nastavení Option Compare
. Další informace naleznete v tématu Příkaz porovnání možností.
Porovnání objektů
Visual Basic porovnává dvě referenční proměnné objektu s Is Operator a IsNot Operator. K určení, jestli dvě referenční proměnné odkazují na stejnou instanci objektu, můžete použít některý z těchto operátorů. Toto dokládá následující příklad.
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
V předchozím příkladu x Is y
se vyhodnotí jako True
, protože obě proměnné odkazují na stejnou instanci. Porovnejte tento výsledek s následujícím příkladem.
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
V předchozím příkladu se x Is y
vyhodnotí jako False
, protože i když proměnné odkazují na objekty stejného typu, odkazují na různé instance tohoto typu.
Pokud chcete testovat dva objekty, které neukazují na stejnou instanci, IsNot
operátor vám umožní vyhnout se gramatické kombinaci Not
a Is
. Toto dokládá následující příklad.
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
V předchozím příkladu If a IsNot b
je ekvivalentní .If Not a Is b
Porovnání typu objektu
Pomocí výrazu TypeOf
...Is
můžete otestovat, zda je objekt určitého typu. Syntaxe je následující:
TypeOf <objectexpression> Is <typename>
Pokud typename
určuje typ rozhraní, TypeOf
výraz ...Is
vrátí True
, pokud objekt implementuje typ rozhraní. Pokud typename
je typ třídy, výraz vrátí True
, pokud je objekt instance zadané třídy nebo třídy, která je odvozena ze zadané třídy. Toto dokládá následující příklad.
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
V předchozím příkladu TypeOf x Is Control
se výraz vyhodnotí True
jako, protože typ x
je Button
, který dědí z Control
.
Další informace naleznete v tématu TypeOf – operátor.