Operadores de comparación (Visual Basic)
Actualización: noviembre 2007
A continuación se recogen los operadores de comparación definidos en Visual Basic .NET.
< (Operador)
<= (Operador)
> (Operador)
>= (Operador)
= (Operador)
<> (Operador)
Estos operadores comparan dos expresiones para determinar si son iguales, y si no lo son, para determinar cuáles son sus diferencias. Is, IsNot y Like se explican detalladamente en distintas páginas de la Ayuda. Los operadores de comparación relacionales se explican detalladamente en esta página.
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
Partes
result
Obligatoria. Un valor Boolean que representa el resultado de la comparación.expression
Obligatoria. Cualquier expresión.comparisonoperator
Obligatoria. Cualquier operador de comparación relacional.object1, object2
Obligatoria. Cualquier nombre de objeto de referencia.string
Obligatoria. Cualquier expresión de tipo String.pattern
Obligatoria. Cualquier intervalo de caracteres o expresión String.
Comentarios
La siguiente tabla contiene una lista con los operadores de comparación relacionales 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 |
<> (Distinto de) |
expression1 <> expression2 |
expression1 = expression2 |
Nota: |
---|
= (Operador, Visual Basic) también se utiliza como un 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.
Comparar números
Cuando una expresión de tipo Single se compara con otra de tipo Double, la expresión Single se convierte a Double. Este comportamiento es contrario al que se daba en Visual Basic 6.
De igual forma, cuando una expresión de tipo Decimal se compara con otra de tipo Single o Double, la expresión Decimal se convierte a Single o Double. En las expresiones Decimal, cualquier valor fraccionario menor que 1E-28 podría perderse. Esta pérdida de valor fraccionario puede provocar que dos valores se consideren equivalentes sin serlo. Por esta razón, deberán extremarse las precauciones cuando se utilice el signo de igualdad (=) para comparar dos variables de punto flotante. Es más seguro comprobar si el valor absoluto de la diferencia entre dos números es inferior al mínimo aceptable.
Imprecisión de punto flotante
Cuando trabaje con números en punto flotante, tenga presente que no siempre tienen una representación precisa en memoria. Esto podría producir que ciertas operaciones arrojaran resultados inesperados, como una comparación de valores y el operador Mod (Operador, Visual Basic). Para obtener más información, vea Solucionar problemas de tipos de datos.
Comparar cadenas
Cuando se comparan cadenas, las expresiones de cadena se evalúan en función del criterio de ordenación alfabética, que depende del valor de Option Compare.
Option Compare Binary efectúa comparaciones de cadenas en función de 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 efectúa comparaciones de cadenas en función de un criterio de ordenación textual que no distingue entre mayúsculas y minúsculas y que viene determinado por la configuración regional del sistema. Al establecer Option Compare Text y ordenar los caracteres en el ejemplo anterior, se aplica el criterio de ordenación de texto siguiente:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Dependencia de la configuración regional
Cuando 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 podrían compararse como iguales en una configuración local, pero no en otra. Si está utilizando una comparación de cadenas para tomar decisiones importantes, por ejemplo aceptar un intento de inicio de sesión, debería estar atento a la sensibilidad de la configuración regional. Considere la posibilidad de definir Option Compare Binary o llamar a StrComp (Función, Visual Basic), que tiene en cuenta la configuración regional.
Programación sin tipos con operadores de comparación relacionales
No se permite utilizar operadores de comparación relacionales con expresiones Object bajo 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 siguiente tabla se muestra cómo se comparan las expresiones y el resultado que devuelve tal comparación en función del tiempo de ejecución de los operandos:
Si los operandos son... |
La comparación es... |
---|---|
Ambos String |
Ordenar la comparación según las características de ordenación de las cadenas. |
Ambos numéricos |
Objetos convertidos a Double, comparación numérica. |
Uno numérico y el otro String |
String se convertirá en Double y se realizará una comparación numérica. Si String no puede convertirse a Double, se producirá una excepción InvalidCastException. |
Uno o ambos pertenecen a tipos de referencia distintos de String |
Se produce una excepción InvalidCastException. |
Las comparaciones numéricas tratan Nothing como 0. Las comparaciones de cadena tratan Nothing como "" (una cadena vacía).
Sobrecarga
Los operadores de comparación relacionales (<. <=, >, >=, =, <>) se pueden sobrecargar, lo que significa que una clase o estructura puede definir de nuevo su comportamiento cuando un operando pertenece al tipo de esa clase o estructura. Si el código utiliza alguno de estos operadores en una clase o estructura de este tipo, asegúrese de conocer su comportamiento redefinido. Para obtener más información, vea Procedimientos de operador.
Observe que = (Operador, Visual Basic) sólo se puede sobrecargar como operador de comparación relacional, y no como operador de asignación.
Ejemplo
En este ejemplo se muestran varios usos distintos de los operadores de comparación, que se utilizan para comparar expresiones. Los operadores de comparación relacionales devuelven un resultado de tipo Boolean para indicar si la expresión se evalúa o no como True. Cuando los operadores > y < se apliquen a cadenas, la comparación se llevará a cabo utilizando el orden alfabético normal de las cadenas. Este orden puede depender de la configuración regional. Que el orden discrimine o no entre mayúsculas y minúsculas dependerá de la configuración de Option Compare.
Dim testResult As Boolean
testResult = 45 < 35
testResult = 45 = 45
testResult = 4 <> 3
testResult = "5" > "4444"
En el ejemplo anterior, la primera comparación devuelve False y las comparaciones restantes devuelven True.
Vea también
Tareas
Solucionar problemas de tipos de datos
Conceptos
Operadores de comparación en Visual Basic
Referencia
Prioridad de operador en Visual Basic