Operátory porovnání (Visual Basic)
Následují relační operátory definované v jazyce Visual Basic.
<
Operátor
<=
Operátor
>
Operátor
>=
Operátor
=
Operátor
<>
Operátor
Tyto operátory porovnávají dva výrazy a určují, jestli jsou stejné, a pokud ne, jak se liší. Is
, IsNot
a Like
jsou podrobně popsány na samostatných stránkách nápovědy. Relační relační operátory jsou podrobně popsány na této stránce.
Syntaxe
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
Součástky
result
Povinný: Hodnota Boolean
představující výsledek porovnání.
expression1
, expression2
Povinný: Libovolný výraz.
comparisonoperator
Povinný: Jakýkoli relační relační relační relační relační operátor.
object1
, object2
Povinný: Všechny názvy referenčních objektů.
string
Povinný: Libovolný String
výraz.
pattern
Povinný: Libovolný String
výraz nebo rozsah znaků
Poznámky
Následující tabulka obsahuje seznam relačních operátorů a podmínek, které určují, zda result
jsou True
nebo False
.
Operátor | True Pokud |
False Pokud |
---|---|---|
< (Menší než) |
expression1 < expression2 |
expression1 >= expression2 |
<= (Menší než nebo rovno) |
expression1 <= expression2 |
expression1 > expression2 |
> (Větší než) |
expression1 > expression2 |
expression1 <= expression2 |
>= (Větší než nebo rovno) |
expression1 >= expression2 |
expression1 < expression2 |
= (Rovná se) |
expression1 = expression2 |
expression1 <> expression2 |
<> (Nerovná se) |
expression1 <> expression2 |
expression1 = expression2 |
Poznámka:
Operátor = se také používá jako operátor přiřazení.
Operátor Is
, IsNot
operátor a Like
operátor mají specifické funkce porovnání, které se liší od operátorů v předchozí tabulce.
Porovnání čísel
Při porovnávání výrazu typu Single
s jedním z typů Double
Single
se výraz převede na Double
. Toto chování je opakem chování zjištěného v jazyce Visual Basic 6.
Podobně při porovnávání výrazu typu Decimal
s výrazem typu Single
nebo Double
se Decimal
výraz převede na Single
nebo Double
. U Decimal
výrazů může dojít ke ztrátě jakékoli desetinné hodnoty menší než 1E-28. Tato ztráta desetinné hodnoty může způsobit, že se dvě hodnoty porovnávají stejně, když nejsou. Z tohoto důvodu byste měli při použití rovnosti (=
) věnovat pozornost porovnání dvou proměnných s plovoucí desetinou čárkou. Je bezpečnější otestovat, jestli je absolutní hodnota rozdílu mezi dvěma čísly menší než malá přijatelná tolerance.
Imprecision s plovoucí desetinou čárkou
Při práci s čísly s plovoucí desetinou čárkou mějte na paměti, že nemají vždy přesné vyjádření v paměti. To může vést k neočekávaným výsledkům určitých operací, jako je porovnání hodnot a operátor Mod. Další informace najdete v tématu Řešení potíží s datovými typy.
Porovnávání řetězců
Při porovnávání řetězců se řetězcové výrazy vyhodnocují na základě abecedního pořadí řazení, které závisí na Option Compare
nastavení.
Option Compare Binary
zakládá porovnávání řetězců na pořadí řazení odvozené z interní binární reprezentace znaků. Pořadí řazení je určeno znakovou stránkou. Následující příklad ukazuje typické binární pořadí řazení.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text
zakází porovnání řetězců na nerozlišující velká a textová pořadí řazení určená národním prostředím vaší aplikace. Když nastavíte Option Compare Text
a seřadíte znaky v předchozím příkladu, platí následující pořadí řazení textu:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Závislost národního prostředí
Při nastavování Option Compare Text
může výsledek porovnání řetězců záviset na národním prostředí, ve kterém je aplikace spuštěná. Dva znaky se můžou srovnat v jednom národním prostředí, ale ne v jiném. Pokud k provádění důležitých rozhodnutí používáte porovnání řetězců, například jestli chcete přijmout pokus o přihlášení, měli byste být upozorňující na citlivost národního prostředí. Zvažte nastavení Option Compare Binary
nebo volání StrComp, které bere v úvahu národní prostředí.
Programování bez typů pomocí relačních re
Použití relačních relačních relačních relačních relačních operátorů s Object
výrazy není povoleno v části Option Strict On
. Pokud Option Strict
je Off
výraz a nebo expression1
expression2
je Object
výraz, typy za běhu určují, jak se porovnávají. Následující tabulka ukazuje, jak se výrazy porovnávají, a výsledek porovnání v závislosti na typu modulu runtime operandů.
Pokud jsou operandy | Porovnání je |
---|---|
Obě String |
Porovnání řazení na základě charakteristik řazení řetězců |
Oba číselné | Objekty převedené na Double číselné porovnání. |
Jedna číselná a jedna String |
Převede se String na Double číselné porovnání. String Pokud nelze převést na Double , InvalidCastException je vyvolána. |
Oba typy odkazů jsou jiné než String |
Je InvalidCastException vyvolán. |
Číselné porovnání považují za Nothing
0. Porovnání řetězců se považují Nothing
za ""
(prázdný řetězec).
Přetížení
Relační relační relační relační operátory (<
. <=
, >
=
>=
, , <>
) mohou být přetíženy, což znamená, že třída nebo struktura mohou předefinovat jejich chování, pokud má operand typ této třídy nebo struktury. Pokud váš kód používá některý z těchto operátorů v takové třídě nebo struktuře, nezapomeňte pochopit předdefinované chování. Další informace naleznete v tématu Procedury operátoru.
Všimněte si, že operátor = může být přetížen pouze jako relační relační operátor, nikoli jako operátor přiřazení.
Příklad
Následující příklad ukazuje různé použití relačních relačních operátorů, které používáte k porovnání výrazů. Relační relační operátory vrátí Boolean
výsledek, který představuje, zda se zadaný výraz vyhodnotí jako True
. Když u řetězců použijete >
operátory a <
operátory, provede se porovnání pomocí normálního abecedního pořadí řazení řetězců. Tato objednávka může záviset na nastavení národního prostředí. Nezáleží na nastavení porovnání možností, jestli je řazení citlivé na velká a malá písmena.
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 vrátí první porovnání False
a zbývající porovnání vrátí True
.