Las expresiones booleanas no se comparan con true y false
Detalles- Detalles
- Categoría: Artículos
- Publicado el Jueves, 07 Diciembre 2006 11:33
Resulta curioso comprobar como a menudo se introducen de manera totalmente prescindible comparaciones de expresiones booleanas con los valores lógicos de verdadero (true) y falso (false).
Por ejemplo, observa este código en C#
1 2 3 4 5 6 7 8 9 10 11 | static void Main(string[] args) { int a = Int32.Parse(Console.ReadLine()); int b = Int32.Parse(Console.ReadLine()); bool c = a > b; if (c == true) Console.WriteLine("El primero es mayor"); else Console.WriteLine("El primero es menor o igual"); } |
La variable "c" es un valor booleano, por lo tanto, vale 'true' o 'false'.
En la sentencia if es totalmente innecesario comparar c con true, ya que el resultado de la comparación es el valor que contenga c.
si c es true → true==true → true
si c es false → false==true → false
Es decir, mucho mejor de esta otra forma:
1 2 3 4 5 6 7 8 9 10 | static void Main(string[] args) { int a = Int32.Parse(Console.ReadLine()); int b = Int32.Parse(Console.ReadLine()); bool c = a > b; if (c) Console.WriteLine("El primero es mayor"); else Console.WriteLine("El primero es menor o igual"); } |
Si necesitaramos hacer la comparación en negativo, por ejemplo
1 2 3 4 5 6 7 8 9 10 | static void Main(string[] args) { int a = Int32.Parse(Console.ReadLine()); int b = Int32.Parse(Console.ReadLine()); bool c = a > b; if (c) Console.WriteLine("El primero es mayor"); else Console.WriteLine("El primero es menor o igual"); } |
Tampoco lo estaríamos haciendo de manera elegante. Mucho mejor esto:
1 2 3 4 5 6 7 8 9 10 | static void Main(string[] args) { int a = Int32.Parse(Console.ReadLine()); int b = Int32.Parse(Console.ReadLine()); bool c = a > b; if (c == false) Console.WriteLine("El primero es menor o igual"); else Console.WriteLine("El primero es mayor"); } |

