ぼくのクロれきし

新人PGが文書をかくブログ

booleanの否定の話

髪を切りに行ったらめちゃくちゃ人が待ってて1時間待ちでした。
予約をしない自分も悪いんですけどね。。。

・本題

さて、今日業務中にc#コードを書いているなかでひとつ引っかかる部分がありました。
bool型を返すメソッドを条件式に入れる際、
否定をするのに二つの処理を考えました。
if(!funkOfBool)
{
//~以下処理
}
if(funkOfBool == false)
{
//~以下処理
}

自分は下のほうが直感的なような気がして休み時間に調べていたのですが、 (コーディング規約には規定されていなかったため) 英版stackoverflowで以下のトピックを見つけました。
stackoverflow.com

…どうやら自分のセンスがないのかもしれませんが、
世間一般には否定の単項演算子が好まれるようです。

・そもそも違う動作なのか?

MicrosoftDocsによるとc#ではbool型はtrue,falseの2値をとる構造体として実装されているようです。 だとすると等価比較演算子論理否定演算子については明確な違いはないように思えます。

どのようなときに違いが発生するのか?
調べてみると等価比較演算子をbool型で扱う例の最たるものはnull許容型とのことでした。 確かにnullチェックと値を確認する二つを同時に行うためには 中身そのまま比較したほうが良さそうですね。

こんなことで迷ってて立派なプログラマになれるんでしょうか…これからも頑張ります。