Alternar una variable booleana en C#

Alternar una variable booleana en C#

  1. Alternar una variable booleana en C#
  2. Utilizar el ! Operador para Alternar una Variable Booleana en C#
  3. Por qué no debería utilizar el operador ^ (XOR) para alternar variables booleanas en C#

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:

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:

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:

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.

bool flag = false;
//toggle(ref flag);
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:

Tabla XOR

Author: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

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

Artículo relacionado - Csharp Boolean

  • Cómo convertir una cadena a booleana en C#
  • Booleano aleatorio en C#
  • Convertir booleano a entero en C#