将字符串转换为简单类型

时间:2010-05-21 03:52:30

标签: c# .net types type-conversion

.Net框架包含一个名为Convert的伟大类,它允许在简单类型,DateTime类型和String类型之间进行转换。该类还支持转换实现IConvertible接口的类型。

该类已在.Net框架的第一个版本中实现。在第一个.Net框架中有一些事情做得不对。例如,如果无法解析字符串,则简单类型的.Parse方法会抛出异常,并且无法检查是否会提前抛出异常。

.Net Framework的未来版本通过引入解决此问题的TryParse方法消除了这一缺陷。

Convert类可以追溯到旧Parse方法的时间,因此该类中的ChangeType方法采用旧样式 - 如果无法执行转换,则抛出异常。

看看以下代码:

public static T ConvertString<T>(string s, T @default)
{
    try
    {
        return (T)Convert.ChangeType(s, typeof(T), CultureInfo.InvariantCulture);
    }
    catch (Exception)
    {
        return @default;
    }            
}

这段代码基本上可以满足我的需求。但是我非常想在这里避免丑陋的尝试/捕获。我敢肯定,与TryParse类似,有一种现代的方法可以重写这段代码而不需要全部。你能推荐一个吗?

1 个答案:

答案 0 :(得分:1)

没有这样的方法,也永远不会有。

Convert.Change调用您传递的对象的IConvertible实现来执行转换。

由于IConvertible接口未定义TryConvertTo方法,因此无法编写TryConvertTo方法。 (向IConvertible添加新方法将是主要重大变更)

Microsoft可以使用其他方法创建ISafeConvertible接口,但我认为不会。