当前位置: 代码迷 >> C# >> int通过obj强转成double,抛出错误了。为什么
  详细解决方案

int通过obj强转成double,抛出错误了。为什么

热度:113   发布时间:2016-05-05 03:25:09.0
int通过obj强转成double,抛出异常了。为什么?
如题,我有以下代码:

static void Main(string[] args)
{
    int i = 1;
    object o = i;
    double d = (double) o;
    Console.WriteLine(d);
    return;
}

一运行就抛出异常:

Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
   at ConsoleApplication3.Program.Main(String[] args) in d:\Documents\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication3\Program.cs:line 15

------解决思路----------------------
首先,你的o引用的对象本身并不“就是”double。其次,也没有从object类型直接转换为int的显示声明的类型转换函数(不能把香蕉转换为马)。于是强制类型转换失败。

编程设计中应该尽量设计成强类型的代码,尽可能避免一切动态弱类型的写法。否则就象这种代码一样,在编译时解析不出问题,甚至在运行时也不会立刻第一次就崩溃,而是在运行几次之后才在用户面前崩溃,那么这种程序就让程序员丢脸了。并且其实也不利于诊断和发现问题。

所以,避免少用一些貌似很高达上的所谓“注入”框架,要用踏踏实实的基于接口、继承、事件监听等机制的可靠的设计模式,才能真正保证框架扩展时的开发效率(不随便使用诡异的和难以调试的框架)。
  相关解决方案