Pages

2017/01/21

C#でCharをIntに変換する際は注意

C#でCharをIntに変換する際は注意
C# で Char を Int に変換する時は注意が必要です。

バグを生みやすいcharの変換

文字列を先頭からチェックしたい場合などに多用する String.Chars プロパティ。
https://msdn.microsoft.com/ja-jp/library/system.string.chars(v=vs.110).aspx

これは使い勝手がなかなか良いのですが、名前のとおり Char で返ってきます。
返ってきた Char は数値に変換して比較なんかする場合が多いと思いますが…
var number = "12345"; 
// 49 
var firstNumber1 = Convert.ToInt32(number[0]); 
// 1 
var firstNumber2 = Convert.ToInt32(number[0].ToString()); 
ToString() していない場合は、10 進数の ASCII コードが返ってきます。

ASCII文字コード
http://e-words.jp/p/r-ascii.html

ビルドエラーになるわけではないので、きちんとした単体テストを作っておくか、実際に動かして検証する必要がありますね。
Related Posts Plugin for WordPress, Blogger...