Delen via


Vergelijkingsoperatoren (Visual Basic)

Hier volgen de vergelijkingsoperatoren die zijn gedefinieerd in Visual Basic.

< Operator

<= Operator

> Operator

>= Operator

= Operator

<> Operator

Is Operator

IsNot-operator

Operator liken

Deze operatoren vergelijken twee expressies om te bepalen of ze gelijk zijn en zo niet, hoe ze verschillen. Is, IsNoten Like worden uitgebreid besproken op afzonderlijke Help-pagina's. De relationele vergelijkingsoperatoren worden uitgebreid besproken op deze pagina.

Syntaxis

result = expression1 comparisonoperator expression2  
result = object1 [Is | IsNot] object2  
result = string Like pattern  

generator

result
Vereist. Een Boolean waarde die het resultaat van de vergelijking aangeeft.

expression1, expression2
Vereist. Elke expressie.

comparisonoperator
Vereist. Elke relationele vergelijkingsoperator.

object1, object2
Vereist. Namen van referentieobjecten.

string
Vereist. Elke String expressie.

pattern
Vereist. Een String expressie of een bereik van tekens.

Opmerkingen

De volgende tabel bevat een lijst met de relationele vergelijkingsoperatoren en de voorwaarden die bepalen of result dat wel True of False.

Operator True Als False Als
< (Kleiner dan) expression1 < expression2 expression1>= expression2
<= (Kleiner dan of gelijk aan) expression1<= expression2 expression1 > expression2
> (Groter dan) expression1 > expression2 expression1<= expression2
>= (Groter dan of gelijk aan) expression1>= expression2 expression1 < expression2
= (Gelijk aan) expression1 = expression2 expression1 <> expression2
<> (Niet gelijk aan) expression1 <> expression2 expression1 = expression2

Notitie

De operator = wordt ook gebruikt als toewijzingsoperator.

De Is operator, de IsNot operator en de Like operator hebben specifieke vergelijkingsfuncties die verschillen van de operatoren in de voorgaande tabel.

Getallen vergelijken

Wanneer u een expressie van het type Single vergelijkt met een van het type Double, wordt de Single expressie geconverteerd naar Double. Dit gedrag is tegenovergestelde van het gedrag in Visual Basic 6.

Op dezelfde manier wordt de expressie geconverteerd naar of wanneer u een expressie van het type Decimal vergelijkt met een expressie van het Decimal type Single of DoubleDouble.Single Voor Decimal expressies kan elke breukwaarde kleiner dan 1E-28 verloren gaan. Een dergelijk breukwaardeverlies kan ertoe leiden dat twee waarden als gelijk worden vergeleken als ze niet zijn. Daarom moet u ervoor zorgen dat u gelijkheid (=) gebruikt om twee variabelen met drijvende komma te vergelijken. Het is veiliger om te testen of de absolute waarde van het verschil tussen de twee getallen kleiner is dan een kleine acceptabele tolerantie.

Onnauwkeurigheid van drijvende komma

Wanneer u werkt met drijvendekommagetallen, moet u er rekening mee houden dat ze niet altijd een nauwkeurige weergave in het geheugen hebben. Dit kan leiden tot onverwachte resultaten van bepaalde bewerkingen, zoals waardevergelijking en de Mod-operator. Zie Problemen met gegevenstypen oplossen voor meer informatie.

Tekenreeksen vergelijken

Wanneer u tekenreeksen vergelijkt, worden de tekenreeksexpressies geëvalueerd op basis van de alfabetische sorteervolgorde, die afhankelijk is van de Option Compare instelling.

Option Compare Binary baseert tekenreeksvergelijkingen op een sorteervolgorde die is afgeleid van de interne binaire weergaven van de tekens. De sorteervolgorde wordt bepaald door de codepagina. In het volgende voorbeeld ziet u een typische binaire sorteervolgorde.

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text baseert tekenreeksvergelijkingen op een hoofdlettergevoelige, tekstuele sorteervolgorde die wordt bepaald door de landinstelling van uw toepassing. Wanneer u de tekens in het voorgaande voorbeeld instelt Option Compare Text en sorteert, is de volgende sorteervolgorde van toepassing:

(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)

Afhankelijkheid van landinstellingen

Wanneer u instelt Option Compare Text, kan het resultaat van een tekenreeksvergelijking afhankelijk zijn van de landinstelling waarin de toepassing wordt uitgevoerd. Twee tekens kunnen in één landinstelling vergelijken, maar niet in een andere landinstelling. Als u een tekenreeksvergelijking gebruikt om belangrijke beslissingen te nemen, bijvoorbeeld of u een poging wilt accepteren om u aan te melden, moet u een waarschuwing ontvangen voor de gevoeligheid van de landinstellingen. Overweeg het instellen Option Compare Binary of aanroepen van de StrComplandinstelling, waarbij rekening wordt gehouden met de landinstelling.

Typeloze programmering met relationele vergelijkingsoperators

Het gebruik van relationele vergelijkingsoperatoren met Object expressies is niet toegestaan onder Option Strict On. Wanneer Option Strict en Offof expression1expression2 een Object expressie is, bepalen de runtimetypen hoe ze worden vergeleken. In de volgende tabel ziet u hoe de expressies worden vergeleken en het resultaat van de vergelijking, afhankelijk van het runtimetype van de operanden.

Als operanden Vergelijking is
Zowel String Sorteervergelijking op basis van tekenreekssorteringskenmerken.
Beide numerieke waarden Objecten geconverteerd naar Double, numerieke vergelijking.
Eén numerieke en één String De String waarde wordt geconverteerd naar een Double en numerieke vergelijking wordt uitgevoerd. Als het String niet kan worden geconverteerd naar Double, wordt er een InvalidCastException gegenereerd.
Beide zijn verwijzingstypen anders dan String Er is een InvalidCastException gegooid.

Numerieke vergelijkingen behandelen Nothing als 0. Tekenreeksvergelijkingen worden behandeld Nothing als "" (een lege tekenreeks).

Overbelasting

De relationele vergelijkingsoperatoren (. , , , , =, ) <>kunnen overbelast worden, wat betekent dat een klasse of structuur hun gedrag opnieuw kan definiëren wanneer een operand het type van die klasse of structuur heeft. >=><=< Als uw code gebruikmaakt van een van deze operators voor een dergelijke klasse of structuur, moet u het opnieuw gedefinieerde gedrag begrijpen. Zie Operator Procedures voor meer informatie.

U ziet dat de operator = alleen kan worden overbelast als een relationele vergelijkingsoperator, niet als toewijzingsoperator.

Opmerking

In het volgende voorbeeld ziet u verschillende toepassingen van relationele vergelijkingsoperatoren, die u gebruikt om expressies te vergelijken. Relationele vergelijkingsoperatoren retourneren een Boolean resultaat dat aangeeft of de vermelde expressie resulteert in True. Wanneer u de > tekenreeksen toepast en < operators op tekenreeksen toepast, wordt de vergelijking gemaakt met behulp van de normale alfabetische sorteervolgorde van de tekenreeksen. Deze volgorde kan afhankelijk zijn van uw landinstelling. Of de sortering hoofdlettergevoelig is of niet afhankelijk is van de instelling Optie vergelijken .

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

In het voorgaande voorbeeld retourneert False de eerste vergelijking en de resterende vergelijkingen True.

Zie ook