有没有办法在 C# 中切换布尔变量?

Is there a way to toggle a boolean variable in C#?

有没有办法在 C# 中切换布尔变量的状态?

我知道这是一个简单的解决方案:

bool locked = false;

if (locked == false)
{
    locked = true;
}
else
{
    locked = false;
}

但是可以像这样在一行中完成吗:

bool locked = false

locked = locked.toggle();

是的。使用以下内容:

locked = !locked;

您尝试过以下方法吗

locked = !locked;

您可以像这样定义扩展方法:

public static class Helpers
{
    public static bool Toggle(this bool value)
    {
        return !value;
    }
}

这样你就可以写一些更有意义的东西,比如locked = locked.Toggle()

希望对您有所帮助

您还可以这样做:

locked ^= true;

我认为 chomba 的回答很好,可以使用 ref parameter 进行改进。

b.ToggleMe(); //b's value has changed. 
//b = b.ToggleMe(); // assign back to itself is not necessary. 

public static class UT
{
    public static bool ToggleMe (this ref bool b)
    {
        b=!b;     //toggle job is done.
        return b; //extra return value allows it being used inside expression.
    }
}