Possible Duplicate:
is there a generic Parse() function that will convert a string to any type using parse?
我想制作一个通用函数来执行某些操作,例如:
ConvertValue<T>(string value)
如果 T
是 int
则该函数会将值转换为 int
并返回结果。
类似地,如果T
是boolean
,该函数会将value
转换为boolean
并返回它。
这个怎么写?
是这样的吗?
public static T ConvertValue<T>(string value)
{
return (T)Convert.ChangeType(value, typeof(T));
}
然后你可以像这样使用它:
int val = ConvertValue<int>("42");
编辑:
如果类型 U
实现 IConvertible
,您甚至可以更通用地执行此操作而不依赖 string
参数 - 这意味着您必须指定两个类型参数:
public static T ConvertValue<T,U>(U value) where U : IConvertible
{
return (T)Convert.ChangeType(value, typeof(T));
}
我考虑过捕获 Convert.ChangeType()
可能引发的 InvalidCastException
异常 - 但在这种情况下您会返回什么? 默认(T)
?让调用者处理异常似乎更合适。