NullableTypes y operadores

30/10/2007 - 22:49 por news.microsoft.com | Informe spam
Hola grupo:

Estuve mirando un poco los tipos anulables y la verdad estoy sorprendido
sobre algunos resultados.
Ejemplo:

Nullable<Int32> nullableOne = 1;
Nullable<Int32> nullableNull=null;
Console.WriteLine(nullableOne > nullableNull); => False
Console.WriteLine(nullableOne == nullableNull); => False
Console.WriteLine(nullableOne < nullableNull); => False

Console.WriteLine(nullableOne >= nullableNull); =>False
Console.WriteLine(nullableOne < nullableNull);=>False

La verdad hubiera supuesto que la comparacion de una variable con un valor
no nulo y otra con un valor nulo, desconocido, daría como resultado Null.
En las ultimas dos lineas, yo hubiera supuesto que si se compara si una
variable es mayor o igual a otra y devuelve false, entences esa variable
sería menor.

Bueno y este ultimo es terrible

Nullable<Int32> firstNull = null;
Nullable<Int32> lastNull=null;
Console.WriteLine(firstNull == lastNull); =>True
Console.WriteLine(firstNull >= lastNull); =>False

La primer comparacion, da true, ahora resulta que si son iguales, pero la
comparación de mayor o igual da falso.
Alguien sabe si esto lo van a arreglar o es el comportramioento deseado??

Saludos
 

Leer las respuestas

#1 news.microsoft.com
30/10/2007 - 23:23 | Informe spam
ok,

Yo no veo dos valore posibles, si se está comparando un valor bool
con nu valor desconocido, el resultado no puede ser ni verdadero ni falso,
ya que hay un valor desconocido, el resultado a mi parecer debería ser
desconocido.
ya que no hay forma de saber si un valor conocido es mayor o menor o iguala
uno desconocido.
Esto es lo que sucede, por lo menos, cuando se trabaja con bases de datos.
Por ejemplo

SELECT True And Null AS resultado
SELECT 1 >= Null AS resultado;
SELECT 1 < Null AS resultado;

devuelven Null


escribió en el mensaje
news:
yo no le veo ningun problema por lo meno yo no esperaria en mi vida
como desarrollador que el resultado de comparar dos variables nunca
esperaría ke me devolviera un valor null ya ke la comparación siempre
dará como resultado los dos únicos valores posiblres falso o verdadero
nunca un valor desconocido

y conrespecto a lo último tampoco leveeo nada raro si tengo un string
s1= null y string s2= null y luego los comparara de essa forma
s1 == s2 esperaria ke me dijera verdadero
talvez lo último sea discutible
firstNull >= lastNull); =>False
ke tede false? porke no verdadero? pero es mejor falso ya ke creo ke
no se deberia comparar dos valores null

Preguntas similares