有没有办法在C#中切换布尔变量的状态?
我知道这是一个简单的解决方案:
bool locked = false;
if (locked == false)
{
locked = true;
}
else
{
locked = false;
}
但是可以用这样的方式在一行中完成:
bool locked = false
locked = locked.toggle();
答案 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.
}
}