web-dev-qa-db-ja.com

ブール値を初期値の反対に変更する

これはあなたには奇妙に聞こえるかもしれませんが、私は次のように書くのが面倒です

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

bool値をその値の反対に変更するint ++やint--のようなものはありませんか?

23
user1046403

これを行うだけです:

threadAlive = !threadAlive;
60
p.s.w.g

はいあります!

threadAlive ^= true;

(これはC#ジョークです。最も一般的なケースでは、C/C++/Javascriptでは機能しません(一部の条件に応じてC/C++/Javascriptで機能します)could^はxor演算子です)

15
xanatos

これはそれをします:

threadAlive = !threadAlive;

正しい用語は Toggle です

14
Habib

論理否定演算子!は、オペランドを否定する単項演算子です。 boolに対して定義され、そのオペランドがtrueの場合に限りfalseを返し、オペランドがfalseの場合にのみtrueを返します。 _:

threadAlive = !threadAlive;
10
Kyle_the_hacker

使用 !演算子:

bool b = true;

b = !b;   // b is now false
6
ouah

非常にシンプル:

threadAlive = ! threadAlive;
5
piokuc

それがあなたが探しているものである場合、基本型に対して オーバーロード演算子 はできません。

他の皆がすでに述べたように、これは間違いなくあなたの最良の選択肢です。

threadAlive = !threadAlive;

ただし、私は決してお勧めしませんが、独自のboolタイプを作成し、++または値を反転させたい演算子。

次のコードは、とにかくneverを使用する必要があるものです。

public class MyBool
{
    bool Value;

    public MyBool(bool value)
    {
        this.Value = value;
    }

    public static MyBool operator ++(MyBool myBoolean)
    {
        myBoolean.Value = !myBoolean.Value;
        return myBoolean;
    }
}

独自の拡張メソッドを作成することもできますが、それはより良い方法ではありません。

4
Avram Tudor