Alternar una variable booleana en C#
-
Alternar una variable booleana en
C# -
Utilizar el
!Operador para Alternar una Variable Booleana enC# -
Por qué no debería utilizar el operador
^(XOR) para alternar variables booleanas enC#
Este artículo nos enseña cómo podemos alternar variables booleanas en C#.
Alternar una variable booleana en C#
Alternar una variable booleana significa cambiar su valor entre true y false. Una forma sencilla de hacerlo es usar el siguiente código, que también se puede convertir en una función:
bool flag = false;
if (flag == false) {
flag = true;
} else {
flag = false;
}
En caso de que tuviera que hacer una función, entonces podría hacer algo como esto:
using System;
class Program
{
static void toggle(ref bool flag)
{
if (flag == false)
{
flag = true;
}
else
{
flag = false;
}
}
static void Main(String[] args)
{
bool flag = false;
toggle(ref flag);
Console.WriteLine(flag);
}
}
Hemos utilizado la palabra clave ref para garantizar que el parámetro flag se pase por referencia, por lo que se cambia dentro de la función.
La salida será la siguiente:
True
Ahora veamos las formas en que podemos omitir estas largas líneas de código y convertirlas en líneas mucho más cortas.
Utilizar el ! Operador para Alternar una Variable Booleana en C#
Una forma de hacer esta alternancia en sintaxis simple es usar el ! operador, que convierte el valor en su opuesto.
Así que podemos escribir algo de la siguiente manera:
flag = !flag;
Si el flag es true, se convertirá en False. Si es false, se convertirá en True.
La salida será la misma:
True
El código completo se ha documentado a continuación:
using System;
class Program
{
static void Main(string[] args)
{
bool flag = false;
flag = !flag;
Console.WriteLine(flag);
}
}
Por qué no debería utilizar el operador ^ (XOR) para alternar variables booleanas en C#
El operador XOR tiende a convertir solo el valor de la variable booleana si es true a false. Sin embargo, no funcionará para casos opuestos donde el valor ya es false.
Echemos un vistazo a un ejemplo a continuación:
using System;
class Program
{
static void Main(string[] args)
{
bool flag = true;
flag ^= flag;
Console.WriteLine(flag);
}
}
Si tuviéramos que ejecutar lo anterior, la salida sería:
False
Pero si el flag estaba establecido en false, poner un XOR sobre él no lo cambiará a True.
using System;
class Program
{
static void Main(string[] args)
{
bool flag = false;
flag ^= flag;
Console.WriteLine(flag);
}
}
La salida es ahora:
False
¿Por qué? Bueno, 1 es true, y 0 es false. Poniendo un XOR con la bandera siendo true, el resultado sería 0 o false.
Pero si ponemos el XOR con la flag siendo false, el resultado seguiría siendo 0. Si recuerdas la tabla XOR, así es como funciona:

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub