Operatori di confronto (Visual Basic)Comparison Operators (Visual Basic)

Di seguito sono riportati gli operatori di confronto definiti in Visual Basic.The following are the comparison operators defined in Visual Basic.

operatore << operator

operatore <=<= operator

operatore >> operator

operatore >=>= operator

operatore == operator

operatore <><> operator

Operatore IsIs Operator

Operatore IsNotIsNot Operator

Operatore LikeLike Operator

Questi operatori confrontano due espressioni per determinare se sono uguali e, in caso contrario, come si differenziano.These operators compare two expressions to determine whether or not they are equal, and if not, how they differ. Is, IsNote Like sono descritte in dettaglio nelle pagine della guida separate.Is, IsNot, and Like are discussed in detail on separate Help pages. Gli operatori di confronto relazionali vengono descritti in dettaglio in questa pagina.The relational comparison operators are discussed in detail on this page.

SintassiSyntax

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

PartiParts

result
Obbligatoria.Required. Valore Boolean che rappresenta il risultato del confronto.A Boolean value representing the result of the comparison.

expression1, expression2expression1, expression2
Obbligatoria.Required. In qualsiasi espressione.Any expression.

comparisonoperator
Obbligatoria.Required. Qualsiasi operatore di confronto relazionale.Any relational comparison operator.

object1, object2object1, object2
Obbligatoria.Required. Qualsiasi nome di oggetto di riferimento.Any reference object names.

string
Obbligatoria.Required. Qualsiasi espressione String .Any String expression.

pattern
Obbligatoria.Required. Qualsiasi espressione String o intervallo di caratteri.Any String expression or range of characters.

NoteRemarks

La tabella seguente contiene un elenco degli operatori di confronto relazionale e le condizioni che determinano se result è True o False.The following table contains a list of the relational comparison operators and the conditions that determine whether result is True or False.

OperatoreOperator True seTrue if False seFalse if
< (minore di)< (Less than) expression1 < expression2 expression1 >= expression2
<= (minore o uguale a)<= (Less than or equal to) expression1 <= expression2 expression1 > expression2
> (maggiore di)> (Greater than) expression1 > expression2 expression1 <= expression2
>= (maggiore o uguale a)>= (Greater than or equal to) expression1 >= expression2 expression1 < expression2
= (uguale a)= (Equal to) expression1 = expression2 expression1 <> expression2
<> (diverso da)<> (Not equal to) expression1 <> expression2 expression1 = expression2

Nota

L' operatore = viene utilizzato anche come operatore di assegnazione.The = Operator is also used as an assignment operator.

L'operatore Is, l'operatore IsNot e l'operatore Like hanno funzionalità di confronto specifiche che differiscono dagli operatori della tabella precedente.The Is operator, the IsNot operator, and the Like operator have specific comparison functionalities that differ from the operators in the preceding table.

Confronto di numeriComparing Numbers

Quando si confronta un'espressione di tipo Single a una di tipo Double, l'espressione Single viene convertita in Double.When you compare an expression of type Single to one of type Double, the Single expression is converted to Double. Questo comportamento è opposto al comportamento trovato nella Visual Basic 6.This behavior is opposite to the behavior found in Visual Basic 6.

Analogamente, quando si confronta un'espressione di tipo Decimal a un'espressione di tipo Single o Double, l'espressione Decimal viene convertita in Single o Double.Similarly, when you compare an expression of type Decimal to an expression of type Single or Double, the Decimal expression is converted to Single or Double. Per Decimal espressioni, qualsiasi valore frazionario minore di 1E-28 potrebbe andare perduto.For Decimal expressions, any fractional value less than 1E-28 might be lost. Tale perdita di valori frazionari può causare il confronto di due valori come uguali quando non lo sono.Such fractional value loss may cause two values to compare as equal when they are not. Per questo motivo, è necessario prestare attenzione quando si utilizza l'uguaglianza (=) per confrontare due variabili a virgola mobile.For this reason, you should take care when using equality (=) to compare two floating-point variables. È più sicuro verificare se il valore assoluto della differenza tra i due numeri è inferiore a una piccola tolleranza accettabile.It is safer to test whether the absolute value of the difference between the two numbers is less than a small acceptable tolerance.

Imprecisione a virgola mobileFloating-point Imprecision

Quando si utilizzano numeri a virgola mobile, tenere presente che non sempre hanno una rappresentazione precisa in memoria.When you work with floating-point numbers, keep in mind that they do not always have a precise representation in memory. Questo può causare risultati imprevisti di determinate operazioni, ad esempio il confronto dei valori e l' operatore mod.This could lead to unexpected results from certain operations, such as value comparison and the Mod Operator. Per ulteriori informazioni, vedere risoluzione dei problemirelativi ai tipi di dati.For more information, see Troubleshooting Data Types.

Confronto di stringheComparing Strings

Quando si confrontano le stringhe, le espressioni stringa vengono valutate in base al relativo ordinamento alfabetico, che dipende dall'impostazione del Option Compare.When you compare strings, the string expressions are evaluated based on their alphabetical sort order, which depends on the Option Compare setting.

Option Compare Binary basa i confronti tra stringhe in base a un ordinamento derivato dalle rappresentazioni binarie interne dei caratteri.Option Compare Binary bases string comparisons on a sort order derived from the internal binary representations of the characters. Il tipo di ordinamento è determinato dalla tabella codici.The sort order is determined by the code page. Nell'esempio seguente viene illustrato un tipico ordinamento binario.The following example shows a typical binary sort order.

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

Option Compare Text basa i confronti di stringhe su un ordinamento testuale senza distinzione tra maiuscole e minuscole determinato dalle impostazioni locali dell'applicazione.Option Compare Text bases string comparisons on a case-insensitive, textual sort order determined by your application's locale. Quando si imposta Option Compare Text e si ordinano i caratteri nell'esempio precedente, viene applicato l'ordinamento del testo seguente:When you set Option Compare Text and sort the characters in the preceding example, the following text sort order applies:

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

Dipendenza dalle impostazioni localiLocale Dependence

Quando si imposta Option Compare Text, il risultato di un confronto tra stringhe può dipendere dalle impostazioni locali in cui l'applicazione è in esecuzione.When you set Option Compare Text, the result of a string comparison can depend on the locale in which the application is running. Due caratteri possono essere paragonati come uguali in un'unica impostazione locale ma non in un'altra.Two characters might compare as equal in one locale but not in another. Se si utilizza un confronto tra stringhe per prendere decisioni importanti, ad esempio se si desidera accettare un tentativo di accesso, è necessario ricevere un avviso per la riservatezza delle impostazioni locali.If you are using a string comparison to make important decisions, such as whether to accept an attempt to log on, you should be alert to locale sensitivity. Prendere in considerazione l'impostazione Option Compare Binary o la chiamata del StrComp, che prende in considerazione le impostazioni locali.Consider either setting Option Compare Binary or calling the StrComp, which takes the locale into account.

Programmazione senza tipo con operatori di confronto relazionaliTypeless Programming with Relational Comparison Operators

L'utilizzo di operatori di confronto relazionali con espressioni Object non è consentito in Option Strict On.The use of relational comparison operators with Object expressions is not allowed under Option Strict On. Quando Option Strict è Offe expression1 o expression2 è un'espressione Object, i tipi di runtime determinano il modo in cui vengono confrontati.When Option Strict is Off, and either expression1 or expression2 is an Object expression, the run-time types determine how they are compared. Nella tabella seguente viene illustrata la modalità di confronto delle espressioni e il risultato del confronto, a seconda del tipo di runtime degli operandi.The following table shows how the expressions are compared and the result from the comparison, depending on the runtime type of the operands.

Se gli operandi sonoIf operands are Il confronto èComparison is
Entrambi StringBoth String Confronto di ordinamento basato sulle caratteristiche di ordinamento delle stringhe.Sort comparison based on string sorting characteristics.
Entrambi numericiBoth numeric Oggetti convertiti in Double, confronto numerico.Objects converted to Double, numeric comparison.
Uno numerico e uno StringOne numeric and one String Il String viene convertito in un Double e viene eseguito un confronto numerico.The String is converted to a Double and numeric comparison is performed. Se non è possibile convertire il String in Double, viene generata un'InvalidCastException.If the String cannot be converted to Double, an InvalidCastException is thrown.
Uno o entrambi sono tipi di riferimento diversi da StringEither or both are reference types other than String Viene generato un tipo InvalidCastException.An InvalidCastException is thrown.

I confronti numerici considerano Nothing come 0.Numeric comparisons treat Nothing as 0. I confronti tra stringhe considerano Nothing come "" (una stringa vuota).String comparisons treat Nothing as "" (an empty string).

OverloadOverloading

Operatori di confronto relazionale (<.The relational comparison operators (<. è possibile eseguire l' Overloaddi <=, >, >=, =``<>), il che significa che una classe o una struttura può ridefinire il comportamento quando un operando ha il tipo della classe o della struttura.<=, >, >=, =, <>) can be overloaded, which means that a class or structure can redefine their behavior when an operand has the type of that class or structure. Se il codice usa uno di questi operatori in una classe o una struttura di questo tipo, assicurarsi di comprendere il comportamento ridefinito.If your code uses any of these operators on such a class or structure, be sure you understand the redefined behavior. Per altre informazioni, vedere Operator Procedures.For more information, see Operator Procedures.

Si noti che è possibile eseguire l'overload dell' operatore = solo come operatore di confronto relazionale, non come operatore di assegnazione.Notice that the = Operator can be overloaded only as a relational comparison operator, not as an assignment operator.

EsempioExample

Nell'esempio seguente vengono illustrati diversi utilizzi degli operatori di confronto relazionali, utilizzati per confrontare le espressioni.The following example shows various uses of relational comparison operators, which you use to compare expressions. Gli operatori di confronto relazionale restituiscono un risultato Boolean che indica se l'espressione specificata restituisce True.Relational comparison operators return a Boolean result that represents whether or not the stated expression evaluates to True. Quando si applicano gli operatori > e < alle stringhe, il confronto viene eseguito usando il normale ordinamento in ordine alfabetico delle stringhe.When you apply the > and < operators to strings, the comparison is made using the normal alphabetical sorting order of the strings. Questo ordine può dipendere dalle impostazioni locali.This order can be dependent on your locale setting. Indica se l'ordinamento fa distinzione tra maiuscole e minuscole o non dipende dall'impostazione Option Compare .Whether the sort is case-sensitive or not depends on the Option Compare setting.

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.In the preceding example, the first comparison returns False and the remaining comparisons return True.

Vedere ancheSee also