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

时间:2015-03-23 02:38:35

标签: c# boolean

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

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

bool locked = false;

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

但是可以用这样的方式在一行中完成:

bool locked = false

locked = locked.toggle();

5 个答案:

答案 0 :(得分:12)

是。使用以下内容:

locked = !locked;

答案 1 :(得分:5)

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

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

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

希望有所帮助

答案 2 :(得分:2)

您是否尝试过以下

locked = !locked;

答案 3 :(得分:0)

您也可以这样做:

locked ^= true;

答案 4 :(得分:0)

我认为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.
    }
}

enter image description here