繁体   English   中英

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

[英]Does Convert.ChangeType() makes sense with a string value?

我发现了@hugoware关于解析值的这篇很棒的帖子: http://hugoware.net/blog/more-control-when-parsing-values 我在一个项目中重新使用了他的代码示例,但现在我注意到在最后一个块(他的代码的第 154 行)中,他使用 Convert.ChangeType() 方法作为“转换”值的最后一次尝试。

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

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

 TypeConverter converter = TypeDescriptor.GetConverter(type);
 string res = converter.ConvertToString(obj);
 object original = converter.ConvertFromString(res);

--

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

来自 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 ...
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM