Operadores de comparación (Visual Basic)
Estos son 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, cómo difieren. Is, IsNot y se Like analizan en detalle en páginas de Ayuda independientes. Los operadores de comparación relacional se analizan con detalle en esta página.
Sintaxis
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
Partes
result
Necesario. 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 String expresión 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 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 operador, el operador y el operador tienen funcionalidades de comparación específicas que difieren de los Is operadores de la tabla IsNot Like anterior.
Comparación de números
Cuando se compara una expresión de tipo Single con una de tipo , la expresión se convierte en Double Single 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 con una expresión de tipo o Decimal , la expresión se convierte en o Single Double Decimal Single Double . Para Decimal las expresiones, cualquier valor fraccionrio menor que 1E-28 podría perderse. Esta pérdida de valor fracciontario puede hacer que dos valores se comparen como iguales cuando no lo están. Por esta razón, 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 pequeña tolerancia aceptable.
Imprecisión de punto flotante
Cuando trabaje 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, vea Solución de problemas de 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 Option Compare configuración.
Option Compare Binary basa las 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 las comparaciones de cadenas en un criterio de ordenación textual sin diferenciar mayúsculas de minúsculas determinado por la configuración regional de la aplicación. Al establecer y ordenar los caracteres del ejemplo anterior, se aplica el Option Compare Text siguiente criterio de ordenación de texto:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Dependencia de la configuración regional
Al establecer 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 acepta un intento de iniciar sesión, debe estar alerta para la confidencialidad de la configuración regional. Considere la posibilidad Option Compare Binary de establecer o llamar a , que tiene en cuenta la configuración StrComp regional.
Programación sin tipo con operadores de comparación relacional
No se permite el uso de operadores de comparación relacional Object con expresiones en Option Strict On . Cuando es y o es una expresión, los tipos en tiempo de Option Strict ejecución determinan cómo se Off expression1 expression2 Object 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 de tiempo de ejecución de los operandos.
| Si los operandos son | La comparación es |
|---|---|
Ambos String |
Comparación de ordenación en función de las características de ordenación de cadenas. |
| Ambos numéricos | Objetos convertidos en Double , comparación numérica. |
Uno numérico y otro String |
se String convierte en y se realiza una comparación Double numérica. Si no String se puede convertir en , se produce una Double InvalidCastException excepción . |
O ambos son tipos de referencia distintos de String |
Se inicia una InvalidCastException. |
Las comparaciones numéricas Nothing se tratan como 0. Las comparaciones de Nothing cadenas se tratan "" como (una cadena vacía).
Sobrecarga
Operadores de comparación relacional ( < . <=, , , , ) se pueden > >= = <> sobrecargar, lo que significa que una clase o estructura puede volver a definir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Si el código usa cualquiera de estos operadores en una clase o estructura de este tipo, asegúrese de que comprende el comportamiento redefinido. Para obtener más información, consulta Operator Procedures.
Observe que el operador = solo se puede sobrecargar como un operador de comparación relacional, no como un 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 Boolean devuelven un resultado que representa si la expresión indicada se evalúa como True . Cuando se aplican los operadores y a las cadenas, la comparación se realiza utilizando el criterio de ordenación > 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 Comparar.
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 y False las comparaciones restantes devuelven True .