C#でSystem.Convert.ChangeType()を試してみる

C# コンピュータ
C#

C#でカンマを含む数字の文字列を数値型の値に変換する方法を探していまして、Convert.ChangeType()が使えそうなので試してみました。

using System;

namespace console
{
    class Program
    {
        static void Main(string[] args)
        {
            string x = "-123456";

            var a = (int)Convert.ChangeType(x, typeof(int));

            Console.WriteLine("結果:{0}", a);
            // 結果:-123456

            x = "2011/3/22";
            var b = (DateTime)Convert.ChangeType(x, typeof(DateTime));
            Console.WriteLine("結果:{0}", b);
            // 結果:2011/03/22 0:00:00
            
            x = "-123,456";
            var c = (decimal)Convert.ChangeType(x, typeof(decimal));
            Console.WriteLine("結果:{0}", c);
            // 結果:-123456

            x = "-999,999";
            try {
                var d = (int)Convert.ChangeType(x, typeof(int));
                Console.WriteLine("結果:{0}", d);
            }
            catch(System.FormatException e) {
                Console.WriteLine("\"{0}\"の変換に失敗しました", x);
            }
            // 結果:
            // "-999,999"の変換に失敗しました
        }
    }
}

カンマを含む文字列はdecimal型の場合変換出来ましたが、int型では例外が発生しました。

コメント