class Program { private static void Main() { object obj = 1; Console.WriteLine(Convert.ToDouble(obj)); // why OK without exception? var d = (double) obj; // why exception? } }
为什么会这样? Convert.ToDouble在运行时的行为和(double)这样的强转,到底有什么不同?
如果这两个行为不一样,什么时候用哪一种才对呢?
谢谢。
解决方案:40分
一个是方法,一个是强转,方法内部会有逻辑保证如果不符合时如何处理,强转只要原来不是数值类型,或者类型为object,装箱的是double的话,强转都会出错
解决方案:20分
Convert.ToDouble调用了int的ToDouble方法,所以没问题