C# Convert.ChangeType()对字符串值有意义吗?

C# Convert.ChangeType()对字符串值有意义吗?,c#,parsing,changetype,C#,Parsing,Changetype,我通过解析值找到了这篇很棒的帖子:。我在一个项目中重复使用了他的代码示例,但现在我注意到在最后一个块(他的代码第154行)中,他使用Convert.ChangeType()方法作为最后一次尝试“转换”值 现在我想知道这是否有意义,因为我们总是从字符串值开始,我猜Convert.ChangeType只对值类型进行强制转换?尝试这样做有意义吗?还是总是失败?如果您只想转换字符串,我建议您使用/ --您可以将Convert.ChangeType()与字符串一起使用。请参阅MSDN文档: 从MSDN:

我通过解析值找到了这篇很棒的帖子:。我在一个项目中重复使用了他的代码示例,但现在我注意到在最后一个块(他的代码第154行)中,他使用Convert.ChangeType()方法作为最后一次尝试“转换”值


现在我想知道这是否有意义,因为我们总是从字符串值开始,我猜Convert.ChangeType只对值类型进行强制转换?尝试这样做有意义吗?还是总是失败?

如果您只想转换字符串,我建议您使用/


--您可以将Convert.ChangeType()与字符串一起使用。请参阅MSDN文档:

从MSDN:

string s = "12/12/98";
DateTime dt = (DateTime)Convert.ChangeType(s, typeof(DateTime));
在上述情况下,从字符串转换是有意义的

通过使用此方法,我认为可以进一步扩展它以处理非字符串值,例如

private static bool _PerformConvert<T,U>( U value, ref T result )
{
    object convert = Convert.ChangeType(value, typeof(U) );
    // Continue ...
}
private static bool\U性能转换(U值,参考T结果)
{
objectconvert=convert.ChangeType(值,typeof(U));
//继续。。。
}

能够从周围的任何值进行转换可能是有意义的,例如,如果您有一个到第三方dll的接口,该dll提供了对象的数字表示(已经发生了!)您可以使用更通用的代码版本在第三方表示和对您的代码更有意义的另一种表示之间进行转换。

convert静态调用就是这样使用的吗?Aka,
Convert.ToInt32(“2010”)确定,因此他的代码将是内置值类型的回退,该类型没有静态解析方法(如果有)。。。
private static bool _PerformConvert<T,U>( U value, ref T result )
{
    object convert = Convert.ChangeType(value, typeof(U) );
    // Continue ...
}