[C#] char から int に変換

全く大した話ではないのですが、数字が入った char を、その数字を表す int にするお話。当然標準クラスのメソッドにあると思ったら、意外になかったというお話。

普通に思いつくのはこれ

1回 string にしちゃうのは面白くない。でも、Int32.Parse には char を取るオーバーロードはありません。

何かないかと思ってMSDNを眺めていたら、Char.GetNumericValue メソッドというそのまんまっぽいのを発見しましたが…

戻り値がなぜか double だったのでキャストすることに。1文字で double ってどういうこと!?調べていくと、Stack Overflow に書かれていました。

There’s a reason for it to return double: char.GetNumericValue(‘¼’) yields 0.25 C# char to int – Stack Overflow

これ、思わず笑ってしまいました。言いたいことはわかりますが、この機能使う人いるのでしょうか?何にしても1回 double になっていると思うと、少し採用しにくいですね。

上記の Stack Overflow に以下のような回答もあります。

文字コードの引き算ですね。記述は一番短くて済むのですが、文字コードに依存してしまっているのが、気持ち悪いです。個人的には無しだと思います。

結論

好みだとは思いますが、個人的には最初に紹介した int.Parse + ToString が一番良いような気がします。一番わかりやすいですし。


Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">