【发布时间】:2018-12-10 23:22:57
【问题描述】:
我正在尝试将 String 转换为泛型类型。泛型类型将是 Int32、Int64、Boolean、Double 等……我尝试了两种方法:
public static Boolean TryParse<T>(String source, out T value) {
TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
try {
value = (T)converter.ConvertFromString(source);
return true;
} catch {
value = default(T);
return false;
}
}
public static Boolean TryChangeType<T>(Object source, out T value) {
try {
Type type = Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T);
value = (T)Convert.ChangeType(source, type);
return true;
} catch {
value = default(T);
return false;
}
}
第二个更通用,因为它接受一个对象。
我也在考虑在 TryChangeType 中传递一个 IFormatProvider,它将在 Convert.ChangeType 中用于解决文化问题等等。
您认为第二种方法更好吗?
有什么方法可以改进我的代码?
【问题讨论】:
标签: c#