Partilhar via


Operadores de comparação (Visual Basic)

A seguir estão os operadores de comparação definidos no Visual Basic.

< Operador

<= Operador

> Operador

>= Operador

= Operador

<> Operador

É Operador

Operador IsNot

Como Operador

Esses operadores comparam duas expressões para determinar se elas são iguais ou não e, em caso negativo, como elas diferem. Is, IsNote Like são discutidos em detalhe em páginas de Ajuda separadas. Os operadores de comparação relacional são discutidos em detalhes 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 que) expression1 < expression2 expression1>= expression2
<= (Inferior 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

Nota

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 com uma do tipo Double, a Single expressão é convertida em Double. Esse comportamento é oposto ao comportamento encontrado no Visual Basic 6.

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

Imprecisão de ponto flutuante

Ao trabalhar com números de vírgula flutuante, tenha em mente que eles nem sempre têm uma representação precisa na memória. Isso pode levar a resultados inesperados de certas operações, como a comparação de valores e o Operador Mod. Para obter mais informações, consulte Solução de 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 em sua 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 as 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 seu aplicativo. Quando você define Option Compare Text e classifica os caracteres no exemplo anterior, aplica-se a seguinte ordem de classificação de texto:

(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á sendo executado. 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 ou não uma tentativa de logon, deverá estar atento à sensibilidade da localidade. Considere definir Option Compare Binary ou chamar o StrComp, que leva em conta a localidade.

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, e ou expression1expression2 é uma Object expressão, 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 tempo de execução dos operandos.

Se os operandos forem A comparação é
Ambos String Comparação de classificação com base nas características de classificação de cadeia de caracteres.
Ambos numéricos Objetos convertidos em Double, comparação numérica.
Um numérico e um String O String é convertido em um Double e a comparação numérica é realizada. Se o String não pode ser convertido em Double, um InvalidCastException é lançado.
Um ou ambos são tipos de referência diferentes do String Um InvalidCastException é jogado.

As comparações numéricas tratam Nothing como 0. As 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 seu código usa qualquer um desses operadores em tal classe ou estrutura, certifique-se de entender o comportamento redefinido. Para obter mais informações, consulte Procedimentos do 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 é ou não avaliada como True. Quando você aplica os > operadores e < às 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 sua configuração de localidade. Se a classificação diferencia maiúsculas de minúsculas ou não, depende da configuração 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