这对你来说可能听起来很奇怪,但我懒得每次都写
if (threadAlive)
{
threadAlive = false;
}
else
{
threadAlive = true;
}
是不是有类似 int++ 或 int-- 的东西可以将 bool 值更改为与其值相反的值?
只需这样做:
threadAlive = !threadAlive;
就在这里!
threadAlive ^= true;
(这是一个 C# 玩笑,在最一般的情况下,它在 C/C++/Javascript 中不起作用(根据某些条件,它可以在 C/C++/Javascript 中起作用),但这是真的!^
是 xor 运算符)
逻辑否定运算符!
是一个对其操作数取反的一元运算符。当且仅当它的操作数是并且当且仅当它的操作数是 时,它才被定义bool
并返回:true
false
false
true
threadAlive = !threadAlive;
使用!
运算符:
bool b = true;
b = !b; // b is now false
如果您正在寻找基本类型,则不能重载运算符。
正如其他所有人已经提到的那样,这是迄今为止您最好的选择:
threadAlive = !threadAlive;
bool
但是,您可以创建自己的类型并重载 the++
或任何您希望反转值的运算符,尽管这是我绝不推荐的。
以下代码无论如何都不应该使用:
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;