Operadores de comparación (Visual Basic)
A continuación se muestran los operadores de comparación definidos en Visual Basic.
Operador <
Operador <=
Operador >
Operador >=
Operador =
Operador <>
Estos operadores comparan dos expresiones para determinar si son iguales o no y, si no lo son, de qué forma difieren. Is
, IsNot
y Like
se describen detalladamente en otras páginas de Ayuda. Los operadores de comparación relacional se describen en detalle en esta página.
Sintaxis
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
Partes
result
Necesario. Un valor Boolean
que representa el resultado de la comparación.
expression1
, expression2
Obligatorio. Cualquier expresión.
comparisonoperator
Obligatorio. Cualquier operador de comparación relacional.
object1
, object2
Necesario. Cualquier nombre de objeto de referencia.
string
Obligatorio. Cualquier expresión String
.
pattern
Obligatorio. Cualquier expresión String
o intervalo de caracteres.
Comentarios
La tabla siguiente contiene una lista de los operadores de comparación relacional y las condiciones que determinan si result
es True
o False
.
Operador | True si |
False si |
---|---|---|
< (menor que) |
expression1 < expression2 |
expression1 >= expression2 |
<= (menor o igual que) |
expression1 <= expression2 |
expression1 > expression2 |
> (mayor que) |
expression1 > expression2 |
expression1 <= expression2 |
>= (mayor o igual que) |
expression1 >= expression2 |
expression1 < expression2 |
= (igual que) |
expression1 = expression2 |
expression1 <> expression2 |
<> (no es igual que) |
expression1 <> expression2 |
expression1 = expression2 |
Nota
El Operador = también se usa como operador de asignación.
El operador Is
, el operador IsNot
y el operador Like
tienen funcionalidades de comparación específicas que difieren de los operadores de la tabla anterior.
Comparación de números
Cuando se compara una expresión de tipo Single
con una de tipo Double
, la expresión Single
se convierte en Double
. Este comportamiento es opuesto al comportamiento que se encuentra en Visual Basic 6.
De forma similar, al comparar una expresión de tipo Decimal
con una expresión de tipo Single
o Double
, la expresión Decimal
se convierte en Single
o en Double
. En el caso de las expresiones Decimal
, se podría perder cualquier valor fraccional menor que 1E-28. Esta pérdida de valores fraccionales puede hacer que dos valores se comparen como iguales cuando no lo son. Por este motivo, debe tener cuidado al usar el símbolo de igualdad (=
) para comparar dos variables de punto flotante. Es más seguro comprobar si el valor absoluto de la diferencia entre los dos números es menor que una tolerancia aceptable pequeña.
Imprecisión de punto flotante
Al trabajar con números de punto flotante, tenga en cuenta que no siempre tienen una representación precisa en la memoria. Esto podría dar lugar a que haya resultados inesperados en determinadas operaciones, como la comparación de valores y el operador Mod. Para más información, consulte Solución de problemas de los tipos de datos.
Comparar cadenas
Al comparar cadenas, las expresiones de cadena se evalúan en función de su criterio de ordenación alfabético, que depende de la configuración Option Compare
.
Option Compare Binary
basa sus comparaciones de cadenas en un criterio de ordenación que se deriva de las representaciones binarias internas de los caracteres. El criterio de ordenación viene determinado por la página de códigos. En el ejemplo siguiente se muestra un criterio de ordenación binario típico.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text
basa sus comparaciones de cadenas en un criterio de ordenación según texto, sin distinción entre mayúsculas y minúsculas, determinado por la configuración regional de la aplicación. Al establecer Option Compare Text
y ordenar los caracteres del ejemplo anterior, se aplica el siguiente criterio de ordenación de texto:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Dependencia de la configuración regional
Cuando se establece Option Compare Text
, el resultado de una comparación de cadenas puede depender de la configuración regional en la que se ejecuta la aplicación. Dos caracteres pueden compararse como iguales en una configuración regional, pero no en otra. Si usa una comparación de cadenas para tomar decisiones importantes, por ejemplo, para aceptar o no un intento de inicio de sesión, debe estar alerta con la confidencialidad de la configuración regional. Considere la posibilidad de establecer Option Compare Binary
o llamar a StrComp, que tiene en cuenta la configuración regional.
Programación sin tipos con operadores de comparación relacionales
El uso de operadores de comparación relacionales con expresiones Object
no se permite en Option Strict On
. Cuando Option Strict
es Off
, y expression1
o expression2
es una expresión Object
, los tipos en tiempo de ejecución determinan cómo se comparan. En la tabla siguiente se muestra cómo se comparan las expresiones y el resultado de la comparación, en función del tipo en tiempo de ejecución de los operandos.
Si los operandos son | La comparación es |
---|---|
Ambos son String |
Comparación de ordenación basada en características de ordenación de cadenas. |
Ambos son numéricos | Objetos convertidos en Double , comparación numérica. |
Uno numérico y otro String |
La String se convierte en un Double y se realiza una comparación numérica. Si la String no se puede convertir en Double , se produce una InvalidCastException. |
Uno o los dos son tipos de referencia distintos de String |
Se inicia una InvalidCastException. |
Las comparaciones numéricas tratan Nothing
como 0. Las comparaciones de cadenas tratan Nothing
como ""
(una cadena vacía).
Sobrecarga
Los operadores de comparación relacional (<
. <=
, >
, >=
, =
, <>
) pueden sobrecargarse, lo que significa que una clase o estructura puede redefinir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Si el código usa alguno de estos operadores en una clase o estructura de este tipo, asegúrese de que comprende bien su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.
Observe que el Operador = solo se puede sobrecargar como operador de comparación relacional, no como operador de asignación.
Ejemplo
En el ejemplo siguiente se muestran varios usos de operadores de comparación relacionales, que se usan para comparar expresiones. Los operadores de comparación relacional devuelven un resultado Boolean
que representa si la expresión indicada se evalúa como True
o no. Cuando se aplican los operadores >
y <
a las cadenas, la comparación se realiza mediante el criterio de ordenación alfabético normal de las cadenas. Este orden puede depender de los valores de la configuración regional. Que la ordenación distinga mayúsculas de minúsculas o no depende de la configuración de Comparación de opciones.
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
En el ejemplo anterior, la primera comparación devuelve False
y las comparaciones restantes devuelven True
.