Estaba escribiendo código hoy y algo no funcionaba como esperaba.Anulación de C# Problema de las declaraciones condicionales
¿Por qué se ejecuta el siguiente código aunque la condición se haya evaluado como falsa?
alt text http://img215.imageshack.us/img215/3011/agfewrf.gif
He intentado poner los apoyos en torno a las dos condiciones, y cambiar su posición, pero el EndedUsingApplication incluso todavía ejecuta.
EDIT:
No tiene nada que ver con el || o & & operadores. Mira esto ...
alt text http://img20.imageshack.us/img20/6655/aaaaaal.gif
Nadie puede aprender de mi error a menos que publico el código culpable, así que aquí está.
public static bool operator ==(ActiveApplication a, ActiveApplication b)
{
if ((object)a == null || (object)b == null)
return false;
return a.process_name == b.process_name && a.window_title == b.window_title;
}
public static bool operator !=(ActiveApplication a, ActiveApplication b)
{
return a == b ? false : true;
}
Y aquí es el código de trabajo ...
public static bool operator ==(ActiveApplication a, ActiveApplication b)
{
// Casting to object class prevents this comparison operator being executed
// again and causing an infinite loop (which I think .NET detects and stops
// but it would still be a huge hole in the logic.
if ((object)a == null && (object)b == null)
return true;
if ((object)a == null^(object)b == null)
return false;
return a.process_name == b.process_name && a.window_title == b.window_title;
}
public static bool operator !=(ActiveApplication a, ActiveApplication b)
{
return a == b ? false : true;
}
El problema parecía ser cuando el operador! = Recibió dos valores nulos.
¿Se puede publicar ese código? – danish
@Jay Riggs: ¡Bingo! Sí, resulta que tengo. Hay una mala lógica que está devolviendo un resultado incorrecto. Escriba una respuesta adecuada y tal vez la marque como la respuesta;) – Nippysaurus
@Nippy - ¡Agregue una respuesta! ¡Gracias! –