Code Bye

object存储一个int,强转为double抛出异常,ConvertTo就OK

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方法,所以没问题

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明object存储一个int,强转为double抛出异常,ConvertTo就OK