将布尔值更改为与初始值相反的值

本文关键字:布尔值 | 更新日期: 2023-09-27 18:25:54

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

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

难道没有像 int++ 或 int-- 这样的东西可以将布尔值更改为与其值相反的东西吗?

将布尔值更改为与初始值相反的值

只需这样做:

threadAlive = !threadAlive;

是的,有!

threadAlive ^= true;

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

这样做:

threadAlive = !threadAlive;

正确的术语是切换

逻辑否定运算符!是否定其操作数的一元运算符。它是为bool定义的,当且仅当其操作数为 false 并且false当且仅当其操作数true时返回true

threadAlive = !threadAlive;

使用 ! 运算符:

bool b = true;
b = !b;   // b is now false

如果这是您要查找的,则不能重载基本类型的运算符。

正如其他人已经提到的,这是迄今为止您的最佳选择:

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;
    }
}

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

很简单:

threadAlive = ! threadAlive;