Pages

2017/02/06

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
Related Posts Plugin for WordPress, Blogger...