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