Condividi tramite


Operatori di confronto (Visual Basic)

Di seguito sono riportati gli operatori di confronto definiti in Visual Basic.

< operatore

<= operatore

> operatore

>= operatore

= operatore

<> operatore

Operatore Is

Operatore IsNot

Operatore Like

Questi operatori confrontano due espressioni per determinare se sono uguali o meno e, in caso contrario, come differiscono. Is, IsNote Like vengono illustrati in dettaglio in pagine della Guida separate. Gli operatori di confronto relazionale sono descritti in dettaglio in questa pagina.

Sintassi

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

Parti

result
Obbligatorio. Valore Boolean che rappresenta il risultato del confronto.

expression1, expression2
Obbligatorio. Qualsiasi espressione.

comparisonoperator
Obbligatorio. Qualsiasi operatore di confronto relazionale.

object1, object2
Obbligatorio. Qualsiasi nome di oggetto di riferimento.

string
Obbligatorio. Qualsiasi String espressione.

pattern
Obbligatorio. Qualsiasi String espressione o intervallo di caratteri.

Osservazioni:

La tabella seguente contiene un elenco degli operatori di confronto relazionali e le condizioni che determinano se result è True o False.

Operatore True se False se
< (Minore di) expression1 < expression2 expression1 >= expression2
<= (Minore o uguale a) expression1 <= expression2 expression1 > expression2
> (Maggiore di) expression1 > expression2 expression1 <= expression2
>= (maggiore o uguale a) expression1 >= expression2 expression1 < expression2
= (Uguale a) expression1 = expression2 expression1 <> expression2
<> (Diverso da) expression1 <> expression2 expression1 = expression2

Annotazioni

L'operatore = viene usato anche come operatore di assegnazione.

L'operatore Is , l'operatore IsNot e l'operatore Like hanno funzionalità di confronto specifiche che differiscono dagli operatori nella tabella precedente.

Confronto tra numeri

Quando si confronta un'espressione di tipo Single con uno di tipo Double, l'espressione Single viene convertita in Double. Questo comportamento è opposto al comportamento trovato in Visual Basic 6.

Analogamente, quando si confronta un'espressione di tipo Decimal con un'espressione di tipo Single o Double, l'espressione Decimal viene convertita in Single o Double. Per Decimal le espressioni, qualsiasi valore frazionaria minore di 1E-28 potrebbe essere perso. Tale perdita di valori frazionari può causare il confronto di due valori come uguali quando non sono. Per questo motivo, è necessario prestare attenzione quando si usa l'uguaglianza (=) per confrontare due variabili a virgola mobile. È più sicuro verificare se il valore assoluto della differenza tra i due numeri è minore di una piccola tolleranza accettabile.

Imprecisione a virgola mobile

Quando si lavora con numeri a virgola mobile, tenere presente che non hanno sempre una rappresentazione precisa in memoria. Ciò potrebbe causare risultati imprevisti da determinate operazioni, ad esempio il confronto dei valori e l'operatore Mod. Per altre informazioni, vedere Risoluzione dei problemi relativi ai tipi di dati.

Confronto di stringhe

Quando si confrontano stringhe, le espressioni stringa vengono valutate in base al relativo ordinamento alfabetico, che dipende dall'impostazione Option Compare .

Option Compare Binary basa i confronti tra stringhe su un ordinamento derivato dalle rappresentazioni binarie interne dei caratteri. L'ordinamento è determinato dalla tabella codici. Nell'esempio seguente viene illustrato un tipico ordinamento binario.

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

Option Compare Text basa i confronti tra stringhe in base a un ordinamento testuale senza distinzione tra maiuscole e minuscole determinato dalle impostazioni locali dell'applicazione. Quando si impostano e si ordinano Option Compare Text i caratteri nell'esempio precedente, si applica l'ordinamento di testo seguente:

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

Dipendenza dalle impostazioni locali

Quando si imposta Option Compare Text, il risultato di un confronto tra stringhe può dipendere dalle impostazioni locali in cui è in esecuzione l'applicazione. Due caratteri possono essere confrontati come uguali in una delle impostazioni locali, ma non in un'altra. Se si usa un confronto tra stringhe per prendere decisioni importanti, ad esempio se accettare un tentativo di accesso, è consigliabile ricevere un avviso sulla riservatezza delle impostazioni locali. Prendere in considerazione l'impostazione Option Compare Binary o la chiamata a StrComp, che tiene conto delle impostazioni locali.

Programmazione senza tipi con operatori di confronto relazionali

L'uso di operatori di confronto relazionali con Object espressioni non è consentito in Option Strict On. Quando Option Strict è Offe o expression1expression2 è un'espressione Object , i tipi di runtime determinano il modo in cui vengono confrontati. Nella tabella seguente viene illustrato come vengono confrontate le espressioni e il risultato del confronto, a seconda del tipo di runtime degli operandi.

Se gli operandi sono Il confronto è
Ambedue String Confronto di ordinamento basato sulle caratteristiche di ordinamento delle stringhe.
Entrambi numerici Oggetti convertiti in Double, confronto numerico.
Uno numerico e uno String L'oggetto String viene convertito in un Double confronto numerico e viene eseguito. Se non è possibile convertire Doublein String , viene generata un'eccezione InvalidCastException .
O entrambi sono tipi di riferimento diversi da String Viene generata un'eccezione InvalidCastException .

I confronti numerici considerano Nothing 0. I confronti tra stringhe considerano Nothing come "" (stringa vuota).

Sovraccarico

Gli operatori di confronto relazionale (<. <=, >>=, =<>) possono essere sovraccaricati, il che significa che una classe o una struttura può ridefinirne il comportamento quando un operando ha il tipo di tale classe o struttura. Se il codice usa uno di questi operatori in una classe o una struttura di questo tipo, assicurarsi di comprendere il comportamento ridefinito. Per altre informazioni, vedere Operator Procedures.

Si noti che l'operatore = può essere sottoposto a overload solo come operatore di confronto relazionale, non come operatore di assegnazione.

Esempio

Nell'esempio seguente vengono illustrati vari usi di operatori di confronto relazionali, usati per confrontare le espressioni. Gli operatori di confronto relazionali restituiscono un Boolean risultato che indica se l'espressione dichiarata restituisce Trueo meno . Quando si applicano gli > operatori e < alle stringhe, il confronto viene eseguito usando il normale ordinamento alfabetico delle stringhe. Questo ordine può dipendere dall'impostazione delle impostazioni locali. Se l'ordinamento fa distinzione tra maiuscole e minuscole o meno dipende dall'impostazione Confronto opzioni .

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

Nell'esempio precedente il primo confronto restituisce False e i confronti rimanenti restituiscono True.

Vedere anche