1. ホーム
  2. c#

[解決済み] parseを使って文字列を任意の型に変換する汎用的なParse()関数はありますか?

2022-11-09 08:57:30

質問

文字列を、以下のような汎用的な型に変換したい。 int または date または long というように、一般的な戻り値の型に基づきます。

基本的に以下のような関数は Parse<T>(String) という型の項目を返す T .

例えば、intが渡された場合、この関数は以下のようになります。 int.parse を内部で実行します。

どのように解決するのですか?

System.Convert.ChangeType

あなたの例のように、あなたはすることができます。

int i = (int)Convert.ChangeType("123", typeof(int));
DateTime dt = (DateTime)Convert.ChangeType("2009/12/12", typeof(DateTime));

generic return type" の要件を満たすには、独自の拡張メソッドを書けばよいでしょう。

public static T ChangeType<T>(this object obj)
{
    return (T)Convert.ChangeType(obj, typeof(T));
}

これで、できるようになります。

int i = "123".ChangeType<int>();