Vergelijkingsoperatoren (Visual Basic)
Hier volgen de vergelijkingsoperatoren die zijn gedefinieerd in Visual Basic.
<
Operator
<=
Operator
>
Operator
>=
Operator
=
Operator
<>
Operator
Deze operatoren vergelijken twee expressies om te bepalen of ze gelijk zijn en zo niet, hoe ze verschillen. Is
, IsNot
en 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 Double
Double
.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 Off
of expression1
expression2
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
.