首页 新闻 会员 周边

Convert.ChangeType

0
悬赏园豆:10 [已关闭问题]

最近看到一段代码。不是很明白。想请教一下大家。

代码如下:

value = Convert.ChangeType(value,typeof(string))

这么转有什么意义呢?他和value.ToString()有什么区别?

Convert.ChangeType一般在什么时候用呢?

 

先谢谢大家了!

C#民工的主页 C#民工 | 初学一级 | 园豆:200
提问于:2009-01-15 23:50
< >
分享
其他回答(2)
1

如果你知道当前类型应当为string的话,没有意义,ChangeType往往用在不知道当前类型应当是什么的情况下,比如有个泛型方法

T GetObject<T>(string str)

要求从string类型转换为指定的T类型,此时只能

return (T)Convert.ChangeType(str, typeof(T));

因为str显式转为T肯定是不行的,只能ChangeType

Gray Zhang | 园豆:17610 (专家六级) | 2009-01-16 02:33
0

value = Convert.ChangeType(value,typeof(string))

这么转有什么意义呢?他和value.ToString()有什么区别?

回答: Convert.ChangeType我觉得应该是一种强制类型转换吧,这种转换正想楼上所说是你在不确定value是什么类型的情况下使用,至于转换成功与否是否正确可能不是很确定。

而toString是object的方法,子类可以覆盖它,可能自己定义他的转换结果。

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-16 09:36
0
Convert.ChangeType(value,xxx)
value是实现了 IConvertible 接口的
这样理解为调用了其 IConvertible 接口 的ToString()
而直接 value.ToString()  则是从object那一路过来的东西了.
系统自带类型详细实现有可能是互相调用(也可能各有不同.), 具体情况得去看.net库的代码了,
自己写的类型么....  
简单的写个例子
class  ABC{}   这时候你 Convert.ChangeType(new ABC(),typeof(string))
这样会有一个异常 - 对象必须实现IConvertible.
如果你写 new ABC().ToString()  那么则得到 "ABC" 这是从object那获得的.
Astral.Road | 园豆:345 (菜鸟二级) | 2009-01-16 13:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册