Compartir a través de


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

Operador Is

Operador IsNot

Operador Like

Estos operadores comparan dos expresiones para determinar si son iguales o no y, si no, cómo difieren. Is, IsNoty Like se describen en detalle en páginas de Ayuda independientes. 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
Obligatorio. 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
Obligatorio. Cualquier nombre de objeto de referencia.

string
Obligatorio. Cualquier String expresión.

pattern
Obligatorio. Cualquier String expresión o intervalo de caracteres.

Observaciones

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 a) expression1 = expression2 expression1 <> expression2
<> (No es igual a) expression1 <> expression2 expression1 = expression2

Nota:

El operador = también se usa como operador de asignación.

El Is operador, el IsNot operador y el Like operador 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 Single expresión se convierte en Double. Este comportamiento es opuesto al comportamiento que se encuentra en Visual Basic 6.

De forma similar, cuando se compara una expresión de tipo Decimal con una expresión de tipo Single o Double, la Decimal expresión se convierte en Single o Double. En el caso Decimal de las expresiones, es posible que se pierda cualquier valor fraccionario menor que 1E-28. Esta pérdida de valores fraccionarios puede hacer que dos valores se comparen como iguales cuando no lo son. Por este motivo, debe tener cuidado al usar la igualdad (=) para comparar dos variables de punto flotante. Es más seguro probar 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 resultados inesperados de determinadas operaciones, como la comparación de valores y el operador Mod. Para obtener más información, consulte Solución de problemas de tipos de datos.

Comparación de 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 Option Compare configuración.

Option Compare Binary basa comparaciones de cadenas en un criterio de ordenación derivado 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 comparaciones de cadenas en un criterio de ordenación textual que no distingue mayúsculas de 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 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, como si desea aceptar un intento de iniciar sesión, debe recibir una alerta de confidencialidad de 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 relacional

No se permite el uso de operadores de comparación relacional con Object expresiones en Option Strict On. Cuando Option Strict es Off, y o expression1expression2 es una Object expresión, 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 String Comparación de ordenación basada en características de ordenación de cadenas.
Ambos valores numéricos Objetos convertidos en Double, comparación numérica.
Uno numérico y otro String String se convierte en una Double comparación numérica y se realiza. Si no String se puede convertir en Double, se produce una InvalidCastException excepción .
O ambos son tipos de referencia distintos de String Se produce una InvalidCastException excepción .

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 (<. <=, >, >=, =, <>) se pueden sobrecargar, 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 cualquiera de estos operadores en dicha clase o estructura, asegúrese de comprender el comportamiento redefinido. Para obtener más información, vea Procedimientos de operador.

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 Boolean resultado que representa si la expresión indicada se Trueevalúa como . Al aplicar los > operadores y < a las cadenas, la comparación se realiza mediante el orden alfabético normal de las cadenas. Este orden puede depender de la configuración regional. Si la ordenación distingue mayúsculas de minúsculas o no depende de la opción 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