web-dev-qa-db-fra.com

Puis-je «inverser» un booléen?

J'ai quelques vérifications pour voir si un écran est actif. Le code ressemble à ceci:

if (GUI.Button(new Rect(Screen.width / 2 - 10, 50, 50, 30), "Rules")) //Creates a button
    {
        if (ruleScreenActive == true) //check if the screen is already active
            ruleScreenActive = false; //handle according to that
        else 
            ruleScreenActive = true;
    }

Existe-t-il un moyen - chaque fois que je clique sur le bouton - d'inverser la valeur de ruleScreenActive?

(Il s'agit de C # dans Unity3D)

47
Simon Verbeke

Vous pouvez vous débarrasser de vos instructions if/else en annulant la valeur du bool:

ruleScreenActive = !ruleScreenActive;
118
Ahmad Mageed

Je pense qu'il vaut mieux écrire:

ruleScreenActive ^= true;

de cette façon, vous évitez d'écrire le nom de la variable deux fois ... ce qui peut entraîner des erreurs

31
Jack

Cela serait indiqué, donc la lisibilité augmente, les coûts d'exécution restent les mêmes:

public static bool Invert(this bool val) { return !val; }

Donner:

ruleScreenActive.Invert();
11
Jack
ruleScreenActive = !ruleScreenActive;
10
MusiGenesis