ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

C# - bool 値を1行で反転させる記法

初めに

 true を false に、false を true に反転させる書き方はさまざまですが、if~else 文を書くのは行数が多く冗長な気がします。本記事では、bool 値を反転させる簡潔な方法を2つ紹介します。


(確認)if~else 文の場合

 if~else文の場合、次のような記述になります。最も分かりやすい形だと思いますが、これだけで8行取ってしまっているので、もう少し短くしたいです。

//value は bool 値

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

条件演算子を使う方法

 ?:演算子を使う方法があります。これは C# 唯一の三項演算子で、1つ目の項の結果に応じて、2つ目か3つ目のどちらかの項の値を返すものになります。

演算子 説明
c ? x : y c が true ならば x を、false ならば y を返します。

 ※1項目は bool 型、2項目と3項目は同じ型であればすべての型が利用可能

 bool 値を反転させる場合は次のようにすればよいです。

//value は bool 値

value = value ? false : true;

 value が true ならば false に、false ならば true になります。

 なお、2項目か3項目のどちらかが返り値となるため、代入する変数の型も bool でなくてもよいです。例えば、?:演算子は次のような使い方もできます。

int num = 7;

//numが5以上ならば10に, それ以外ならば0になる
int a = (num >= 5) ? 10 : 0

論理否定を使う

 bool 値にのみ使える演算子として、論理否定を表す ! 演算子があります。これは、x が true の場合は !x は false に、x が false の場合は !x は true になります。

//value は bool 値

value = !value;

最後に

  • 1行で書きたいのであれば、?:演算子を使うか、論理否定を表す ! 演算子を使うか

 関係演算子である != はよく使いますが、論理演算子は使う発想がでないことがあるので、戒めのために記事にした部分があります。

 演算子については、下の記事にまとめております。演算子を探したい場合にお使いください。

fineworks-fine.hatenablog.com