C#で文字列のTrueやFalseを比較する

C#で文字列のTrueやFalseを比較する
bool が文字列として入っている変数を判定する場合の注意です。

C#におけるboolの判定

よくありがちな書き方です。
こういう書き方でも要件は満たせますが、文字列として "True" とかソースに書いちゃうのはあまり良くないですね。
var boolValue1 = "True"; 
 
if (boolValue1 == "True") 
{ 
    // 文字列は True。条件にマッチします。 
} 
 
if (boolValue1 == "true") 
{ 
    // 条件にマッチしません 
} 
if (boolValue1.ToUpper() == "true".ToUpper()) 
{ 
    // 条件にマッチするけど、イケてない書き方です。 
} 
string.Compare を使った例です。
if (string.Compare(boolValue1, bool.TrueString, true) == 0) 
{ 
    // 文字列は True。true でもいいし、TRue でもマッチします。  
} 
bool 値を文字列で返してくれる bool.TrueString はあまり目にしませんが、これなら文字列として "true" とか書かなくてもいいので覚えておくとスマートな書き方になります。また、string.Compare の方が、ToUpper() よりもパフォーマンスは良いです。

今回のような判定を何万行も繰り返すのはデータコンバート以外ではないでしょうが、覚えておくといいと思います。

大文字/小文字を区別しないで文字列を比較するには?[C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/624ignorecase/ignorecase.html

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する