将bool值更改为与初始值相反的值

时间:2013-08-02 13:37:11

标签: c# c++ c boolean

这对你来说可能听起来很奇怪,但我每次都懒得写

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

是不是有像int ++或int--这样的东西将bool值更改为与其值相反?

7 个答案:

答案 0 :(得分:57)

这样做:

threadAlive = !threadAlive;

答案 1 :(得分:14)

这样就可以了:

threadAlive = !threadAlive;

正确的字词是Toggle

答案 2 :(得分:14)

是的,有!

threadAlive ^= true;

(这是一个C#笑话,在最常见的情况下,它不适用于C / C ++ / Javascript(可以在C / C ++ / Javascript中工作,具体取决于某些条件),但是这是真的!^是xor运算符)

答案 3 :(得分:10)

逻辑否定运算符!是一个否定其操作数的一元运算符。它是为bool定义的,当且仅当其操作数为truefalse且当且仅当其操作数为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;
    }
}

您也可以创建自己的扩展方法,但这也不是更好的方法。