如题,我有以下代码:
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的显示声明的类型转换函数(不能把香蕉转换为马)。于是强制类型转换失败。
编程设计中应该尽量设计成强类型的代码,尽可能避免一切动态弱类型的写法。否则就象这种代码一样,在编译时解析不出问题,甚至在运行时也不会立刻第一次就崩溃,而是在运行几次之后才在用户面前崩溃,那么这种程序就让程序员丢脸了。并且其实也不利于诊断和发现问题。
所以,避免少用一些貌似很高达上的所谓“注入”框架,要用踏踏实实的基于接口、继承、事件监听等机制的可靠的设计模式,才能真正保证框架扩展时的开发效率(不随便使用诡异的和难以调试的框架)。