Compartilhar via


Operadores de comparação (Visual Basic)

Veja a seguir os operadores de comparação definidos no Visual Basic.

operador <

operador <=

operador >

operador >=

operador =

operador <>

Operador Is

Operador IsNot

Operador Like

Esses operadores comparam duas expressões para determinar se elas são ou não iguais e, se não, como elas diferem. Is, IsNote Like são discutidos em detalhes em páginas de Ajuda separadas. Os operadores de comparação relacional são discutidos detalhadamente nesta página.

Sintaxe

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

Partes

result
Obrigatório Um Boolean valor que representa o resultado da comparação.

expression1, expression2
Obrigatório Qualquer expressão.

comparisonoperator
Obrigatório Qualquer operador de comparação relacional.

object1, object2
Obrigatório Qualquer nome de objeto de referência.

string
Obrigatório Qualquer String expressão.

pattern
Obrigatório Qualquer String expressão ou intervalo de caracteres.

Observações

A tabela a seguir contém uma lista dos operadores de comparação relacional e as condições que determinam se result é True ou False.

Operador True se False se
< (Menos de) expression1 < expression2 expression1 >= expression2
<= (Menor ou igual a) expression1 <= expression2 expression1 > expression2
> (Maior que) expression1 > expression2 expression1 <= expression2
>= (Maior ou igual a) expression1 >= expression2 expression1 < expression2
= (Igual a) expression1 = expression2 expression1 <> expression2
<> (Não é igual a) expression1 <> expression2 expression1 = expression2

Observação

O operador = também é usado como um operador de atribuição.

O Is operador, o IsNot operador e o Like operador têm funcionalidades de comparação específicas que diferem dos operadores na tabela anterior.

Comparando números

Quando você compara uma expressão do tipo Single a um tipo Double, a Single expressão é convertida Doubleem . Esse comportamento é oposto ao comportamento encontrado no Visual Basic 6.

Da mesma forma, quando você compara uma expressão de tipo Decimal a uma expressão de tipo Single ou Double, a Decimal expressão é convertida Single em ou Double. Para Decimal expressões, qualquer valor fracionário menor que 1E-28 pode ser perdido. Essa perda de valor fracionário pode fazer com que dois valores sejam comparados como iguais quando não forem. Por esse motivo, você deve tomar cuidado ao usar a igualdade (=) para comparar duas variáveis de ponto flutuante. É mais seguro testar se o valor absoluto da diferença entre os dois números é menor do que uma pequena tolerância aceitável.

Imprecisão de ponto flutuante

Quando você trabalha com números de ponto flutuante, tenha em mente que nem sempre eles têm uma representação precisa na memória. Isso pode levar a resultados inesperados de determinadas operações, como comparação de valor e o Operador Mod. Para obter mais informações, consulte Solucionar problemas de tipos de dados.

Comparando cadeias de caracteres

Quando você compara cadeias de caracteres, as expressões de cadeia de caracteres são avaliadas com base na ordem de classificação alfabética, que depende da Option Compare configuração.

Option Compare Binary baseia comparações de cadeia de caracteres em uma ordem de classificação derivada das representações binárias internas dos caracteres. A ordem de classificação é determinada pela página de código. O exemplo a seguir mostra uma ordem de classificação binária típica.

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

Option Compare Text baseia comparações de cadeia de caracteres em uma ordem de classificação textual que não diferencia maiúsculas de minúsculas determinada pela localidade do aplicativo. Quando você define Option Compare Text e classifica os caracteres no exemplo anterior, a seguinte ordem de classificação de texto se aplica:

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

Dependência de localidade

Quando você define Option Compare Text, o resultado de uma comparação de cadeia de caracteres pode depender da localidade na qual o aplicativo está em execução. Dois caracteres podem ser comparados como iguais em uma localidade, mas não em outra. Se você estiver usando uma comparação de cadeia de caracteres para tomar decisões importantes, como aceitar uma tentativa de fazer logon, deverá estar alerta para a confidencialidade da localidade. Considere a configuração Option Compare Binary ou a StrCompchamada , que leva a localidade em conta.

Programação sem tipo com operadores de comparação relacional

O uso de operadores de comparação relacional com Object expressões não é permitido em Option Strict On. Quando Option Strict é Off, ou expression1expression2 é uma expressão Object , os tipos de tempo de execução determinam como eles são comparados. A tabela a seguir mostra como as expressões são comparadas e o resultado da comparação, dependendo do tipo de runtime dos operandos.

Se operandos forem A comparação é
Ambos String Classificar a comparação com base nas características de classificação de cadeia de caracteres.
Ambos numéricos Objetos convertidos em Doublecomparação numérica.
Um numérico e outro String A String conversão é feita em uma Double comparação numérica. Se não String puder ser convertido Double, um InvalidCastException será gerado.
Ambos ou ambos são tipos de referência diferentes de String Um InvalidCastException é lançado.

Comparações numéricas tratam Nothing como 0. Comparações de cadeia de caracteres são tratadas Nothing como "" (uma cadeia de caracteres vazia).

Sobrecarga

Os operadores de comparação relacional (<. <=, , >>=, =, , <>) podem ser sobrecarregados, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se o código usar qualquer um desses operadores em tal classe ou estrutura, certifique-se de entender o comportamento redefinido. Para obter mais informações, consulte Procedimentos de Operador.

Observe que o operador = pode ser sobrecarregado apenas como um operador de comparação relacional, não como um operador de atribuição.

Exemplo

O exemplo a seguir mostra vários usos de operadores de comparação relacional, que você usa para comparar expressões. Os operadores de comparação relacional retornam um Boolean resultado que representa se a expressão declarada é avaliada Truecomo . Quando você aplica os operadores e < as > cadeias de caracteres, a comparação é feita usando a ordem de classificação alfabética normal das cadeias de caracteres. Essa ordem pode depender da configuração de localidade. Se a classificação diferencia maiúsculas de minúsculas ou não depende da configuração de Comparação de Opções .

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

No exemplo anterior, a primeira comparação retorna False e as comparações restantes retornam True.

Consulte também