Dela via


Jämförelseoperatorer (Visual Basic)

Följande är jämförelseoperatorerna som definierats i Visual Basic.

< Operatör

<= Operatör

> Operatör

>= Operatör

= Operatör

<> Operatör

Är operator

IsNot-operator

Gilla-operator

Dessa operatorer jämför två uttryck för att avgöra om de är lika, och om inte, hur de skiljer sig åt. Is, IsNotoch Like beskrivs i detalj på separata hjälpsidor. Relationsjämförelseoperatorerna beskrivs i detalj på den här sidan.

Syntax

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

Delar

result
Obligatoriska. Ett Boolean värde som representerar resultatet av jämförelsen.

expression1, expression2
Obligatoriska. Alla uttryck.

comparisonoperator
Obligatoriska. Alla relationsjämförelseoperatorer.

object1, object2
Obligatoriska. Alla namn på referensobjekt.

string
Obligatoriska. Alla String uttryck.

pattern
Obligatoriska. Alla String uttryck eller teckenintervall.

Kommentarer

Följande tabell innehåller en lista över relationsjämförelseoperatorerna och de villkor som avgör om result är True eller False.

Operator True Om False Om
< (Mindre än) expression1 < expression2 expression1>= expression2
<= (Mindre än eller lika med) expression1<= expression2 expression1 > expression2
> (Större än) expression1 > expression2 expression1<= expression2
>= (Större än eller lika med) expression1>= expression2 expression1 < expression2
= (Lika med) expression1 = expression2 expression1 <> expression2
<> (Inte lika med) expression1 <> expression2 expression1 = expression2

Kommentar

Operatorn = används också som tilldelningsoperator.

Operatorn Is , operatorn IsNot och operatorn Like har specifika jämförelsefunktioner som skiljer sig från operatorerna i föregående tabell.

Jämföra tal

När du jämför ett uttryck av typen Single med en av typen DoubleSingle konverteras uttrycket till Double. Det här beteendet är motsatsen till det beteende som finns i Visual Basic 6.

På samma sätt konverteras uttrycket till eller när du jämför ett uttryck av typen Decimal med ett uttryck av typen Single eller DoubleDecimalDouble.Single För Decimal uttryck kan eventuella bråkvärden som är mindre än 1E-28 gå förlorade. En sådan delvärdeförlust kan orsaka att två värden jämförs som lika när de inte är det. Därför bör du vara försiktig när du använder likhet (=) för att jämföra två flyttalsvariabler. Det är säkrare att testa om det absoluta värdet för skillnaden mellan de två talen är mindre än en liten acceptabel tolerans.

Flyttalsimprecision

När du arbetar med flyttalsnummer bör du tänka på att de inte alltid har en exakt representation i minnet. Detta kan leda till oväntade resultat från vissa åtgärder, till exempel värdejämförelse och Mod-operatorn. Mer information finns i Felsöka datatyper.

Jämföra strängar

När du jämför strängar utvärderas stränguttrycken baserat på deras alfabetiska sorteringsordning, vilket beror på inställningen Option Compare .

Option Compare Binary baser strängjämförelser på en sorteringsordning som härleds från de interna binära representationerna av tecknen. Sorteringsordningen bestäms av kodsidan. I följande exempel visas en typisk binär sorteringsordning.

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

Option Compare Text baserar strängjämförelser på en skiftlägeskänslig, textbaserad sorteringsordning som bestäms av programmets nationella inställningar. När du anger Option Compare Text och sorterar tecknen i föregående exempel gäller följande sorteringsordning för text:

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

Nationella beroenden

När du anger Option Compare Textkan resultatet av en strängjämförelse bero på vilket språk som programmet körs i. Två tecken kan jämföras som lika med i ett språk, men inte i ett annat. Om du använder en strängjämförelse för att fatta viktiga beslut, till exempel om du vill acceptera ett försök att logga in, bör du vara uppmärksam på språkkänslighet. Överväg att antingen ange Option Compare Binary eller anropa StrComp, som tar hänsyn till nationella inställningar.

Typlös programmering med relationsjämförelseoperatorer

Användning av relationsjämförelseoperatorer med Object uttryck tillåts inte under Option Strict On. När Option Strict är Off, och antingen expression1 eller expression2 är ett Object uttryck, avgör körningstyperna hur de jämförs. I följande tabell visas hur uttrycken jämförs och resultatet från jämförelsen, beroende på operandernas körningstyp.

Om operander är Jämförelse är
Både String Sorteringsjämförelse baserat på strängsorteringsegenskaper.
Båda numeriska Objekt som konverterats till Double, numerisk jämförelse.
Ett numeriskt och ett String String Konverteras till en Double och numerisk jämförelse utförs. Om det String inte går att konvertera till Doublegenereras en InvalidCastException .
Antingen eller båda är andra referenstyper än String En InvalidCastException kastas.

Numeriska jämförelser behandlas Nothing som 0. Strängjämförelser behandlas Nothing som "" (en tom sträng).

Överbelastning

Relationsjämförelseoperatorerna (. , , , , ) kan överbelastas, vilket innebär att en klass eller struktur kan omdefiniera sitt beteende när en operande har den typen av klass eller struktur. <>=>=><=< Om din kod använder någon av dessa operatorer i en sådan klass eller struktur, se till att du förstår det omdefinierade beteendet. Mer information finns i Operatorprocedurer.

Observera att = operatorn endast kan överbelastas som en relationsjämförelseoperator, inte som en tilldelningsoperator.

Exempel

I följande exempel visas olika användningar av relationsjämförelseoperatorer, som du använder för att jämföra uttryck. Relationsjämförelseoperatorer returnerar ett Boolean resultat som representerar om det angivna uttrycket utvärderas till True. När du använder operatorerna > och < på strängar görs jämförelsen med hjälp av strängernas normala alfabetiska sorteringsordning. Den här ordningen kan vara beroende av nationella inställningar. Om sorteringen är skiftlägeskänslig eller inte beror på inställningen Alternativjäsning .

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

I föregående exempel returnerar False den första jämförelsen och återstående jämförelser returnerar True.

Se även