Ответ 1
Просто сделайте следующее:
threadAlive = !threadAlive;
Это может показаться вам странным, но я слишком ленив, чтобы писать каждый раз, например
if (threadAlive)
{
threadAlive = false;
}
else
{
threadAlive = true;
}
нет, есть что-то вроде int ++ или int--, чтобы изменить значение bool в противоположность его значению?
Просто сделайте следующее:
threadAlive = !threadAlive;
Это сделало бы это:
threadAlive = !threadAlive;
Правильный термин Toggle
Да, есть!
threadAlive ^= true;
(это шутка на С#, в самом общем случае она не будет работать в C/С++/Javascript (она может работать на C/С++/Javascript в зависимости от некоторых условий), но это правда! ^
оператор xor)
Оператор логического отрицания !
является унарным оператором, который отрицает его операнд. Он определен для bool
и возвращает true
тогда и только тогда, когда его операнд false
и false
тогда и только тогда, когда его операнд true
:
threadAlive = !threadAlive;
Используйте оператор !
:
bool b = true;
b = !b; // b is now false
Очень просто:
threadAlive = ! threadAlive;
Вы не можете перегружать операторы для базовых типов, если это то, что вы ищете.
Как уже упоминалось выше, это, безусловно, лучший вариант:
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;
}
}
Вы также можете создать свой собственный метод расширения, но это также не лучший способ.