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
Esses operadores comparam duas expressões para determinar se elas são iguais ou não e, em caso negativo, como elas diferem. Is
, IsNot
e 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 expression1
expression2
é 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
.