Изменение значений bool в противоположность начальному значению - программирование
Подтвердить что ты не робот

Изменение значений bool в противоположность начальному значению

Это может показаться вам странным, но я слишком ленив, чтобы писать каждый раз, например

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

нет, есть что-то вроде int ++ или int--, чтобы изменить значение bool в противоположность его значению?

4b9b3361

Ответ 1

Просто сделайте следующее:

threadAlive = !threadAlive;

Ответ 2

Это сделало бы это:

threadAlive = !threadAlive;

Правильный термин Toggle

Ответ 3

Да, есть!

threadAlive ^= true;

(это шутка на С#, в самом общем случае она не будет работать в C/С++/Javascript (она может работать на C/С++/Javascript в зависимости от некоторых условий), но это правда! ^ оператор xor)

Ответ 4

Оператор логического отрицания ! является унарным оператором, который отрицает его операнд. Он определен для bool и возвращает true тогда и только тогда, когда его операнд false и false тогда и только тогда, когда его операнд true:

threadAlive = !threadAlive;

Ответ 5

Используйте оператор !:

bool b = true;

b = !b;   // b is now false

Ответ 6

Очень просто:

threadAlive = ! threadAlive;

Ответ 7

Вы не можете перегружать операторы для базовых типов, если это то, что вы ищете.

Как уже упоминалось выше, это, безусловно, лучший вариант:

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

}

Вы также можете создать свой собственный метод расширения, но это также не лучший способ.