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 <>

Is (operador)

Operador IsNot

Like (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.

Consulte también