将布尔值更改为与初始值相反的值
本文关键字:布尔值 | 更新日期: 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;