Alternar una variable booleana en C#

Bilal Shahid 15 febrero 2024
  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#
Alternar una variable booleana 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:

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:

Tabla XOR

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