这对你来说可能听起来很奇怪,但我每次都懒得写
if (threadAlive)
{
threadAlive = false;
}
else
{
threadAlive = true;
}
是不是有像int ++或int--这样的东西将bool值更改为与其值相反?
答案 0 :(得分:57)
这样做:
threadAlive = !threadAlive;
答案 1 :(得分:14)
答案 2 :(得分:14)
是的,有!
threadAlive ^= true;
(这是一个C#笑话,在最常见的情况下,它不适用于C / C ++ / Javascript(可以在C / C ++ / Javascript中工作,具体取决于某些条件),但是这是真的!^
是xor运算符)
答案 3 :(得分:10)
逻辑否定运算符!
是一个否定其操作数的一元运算符。它是为bool
定义的,当且仅当其操作数为true
且false
且当且仅当其操作数为false
时才返回true
:
threadAlive = !threadAlive;
答案 4 :(得分:6)
使用!
运算符:
bool b = true;
b = !b; // b is now false
答案 5 :(得分:5)
很简单:
threadAlive = ! threadAlive;
答案 6 :(得分:4)
如果您正在寻找基本类型,则不能overload operators。
正如其他人已经提到的那样,这是目前最好的选择:
threadAlive = !threadAlive;
但是,您可以创建自己的bool
类型并重载++
或您想要反转价值的运算符。
以下代码应始终永远不会:
public class MyBool
{
bool Value;
public MyBool(bool value)
{
this.Value = value;
}
public static MyBool operator ++(MyBool myBoolean)
{
myBoolean.Value = !myBoolean.Value;
return myBoolean;
}
}
您也可以创建自己的扩展方法,但这也不是更好的方法。