int i = 1;
Double d = (Double) i;与
Double d1 =Convert.Touble(i);有什么区别
高手可以详细说明一下吗??或者直接发QQ给我说 821359827
反编译你看,是一样的! 你第一个也可以 隐式转换
int i = 1;
Double d = i;
反过来就要显示!
可以说是完全一样的。
事实上,你还可以写成:
double d2=i;
这些都会由.NET的类型转换机制完成,无论使用的是哪个方案,最终都会归结到同一个点来达到目的。
如果你一定想知道有什么区别,这个第一个方案和我写的方案是没办法查看的(这个是语言内置了的),但使用CONVERT的方案你则可以通过REFLECTOR之类的工具反编译代码后查看过程,这个过程就是你的第一个方案与我说的方案的具体实现。
如果想知道性能,可以调用STOPWATCH来观察,只是这个时间非常非常短,可以 忽略为0。
挺别人说这个和值类型和引用类型有关 是真的吗?? 弄的我想当纠结,这个是今天遇到的一个问题,用Double转换报错但用Convert.ToDouble就没问题 这个怎么解释呀
@水行者: 其实就是装箱与拆箱的问题。用convert呢,相对安全点,而且convert还可以自定义(特别是两个类型之间不相关的 时候,使用ICONVERTABLE接口)。
那要按你这个意思说Convert是引用类型,而Double是值类型的
@水行者: Convert是一个转换器,主要是调用被转换对象的所实现的 ICONVERTABLE接口来执行转换。对于int等系统类型,则会使用默认的转换器(通过CULTUREINFO的 CURRENT来获得)。
http://developer.51cto.com/art/200908/145643.htm
使用Reflector查看Convert的源代码就会发现, Convert.ToDouble(Int32)的实现就是return (double) value;