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

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

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

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