Sdílet prostřednictvím


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

Operátor Is

Operátor IsNot

Operátor Like

Tyto operátory porovnávají dva výrazy a určují, jestli jsou stejné, a pokud ne, jak se liší. Is, IsNota 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ů DoubleSingle 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 Doublese 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 Textmůž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 Offvýraz a nebo expression1expression2 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.

Viz také