Cela peut vous sembler étrange mais je suis trop paresseux pour écrire à chaque fois comme
if (threadAlive)
{
threadAlive = false;
}
else
{
threadAlive = true;
}
n'y a-t-il pas quelque chose comme int ++ ou int-- pour changer la valeur booléenne à l'opposé de sa valeur?
Faites juste ceci:
threadAlive = !threadAlive;
Oui il y a!
threadAlive ^= true;
(c'est une blague C #, dans le cas le plus général cela ne fonctionnera pas en C/C++/Javascript (cela pourrait fonctionner en C/C++/Javascript selon certaines conditions), mais c'est vrai! ^
est l'opérateur xor)
L'opérateur de négation logique !
est un opérateur unaire qui annule son opérande. Il est défini pour bool
et renvoie true
si et seulement si son opérande est false
et false
si et seulement si son opérande est true
:
threadAlive = !threadAlive;
Utilisez le !
opérateur:
bool b = true;
b = !b; // b is now false
Très simple:
threadAlive = ! threadAlive;
Vous ne pouvez pas opérateurs de surcharge pour les types de base si c'est ce que vous recherchez.
Comme tout le monde l'a déjà mentionné, c'est de loin votre meilleure option:
threadAlive = !threadAlive;
Vous pouvez cependant, bien que ce soit quelque chose que je ne recommanderais jamais, créer votre propre type bool
et surcharger le ++
ou tout opérateur que vous souhaitez inverser votre valeur.
Le code suivant est quelque chose qui ne devrait jamais être utilisé de toute façon:
public class MyBool
{
bool Value;
public MyBool(bool value)
{
this.Value = value;
}
public static MyBool operator ++(MyBool myBoolean)
{
myBoolean.Value = !myBoolean.Value;
return myBoolean;
}
}
Vous pouvez également créer votre propre méthode d'extension, mais ce ne sera pas non plus une meilleure façon.