无法从double转换为int

Ren*_*nan -1 c# sharepoint

我正在使用Sharepoint中的一小段代码,如下所示:

int? do_ = (int?)re["mi"]; // consider "re" a dictionary<string, object>;
Run Code Online (Sandbox Code Playgroud)

等号右边的表达式求值为a Double.为了double确保,我double在监视窗口中检查它(:D).是的,它是一个System.Double进出的.

但是,该行抛出异常:

指定演员表无效.

当我明白是的时候,我正准备用我的额头在我的桌子上留下凹痕,是的,你可以将double转换为int,尽管丢失了值的非整数部分(实际上是在我的情况下).在世界开始之前,我在编程的第一天就学到了这一点.

所以为了更加确定,我创建了另一个解决方案,一个简单的控制台应用程序.我把这段代码放进去了:

double dragon = 2.0;
int? i = (int?)dragon;
Run Code Online (Sandbox Code Playgroud)

它的工作原理与预期一致.

为什么它会在一个设置中工作但在另一个设置中失败?

Eri*_*ert 9

这是一个非常常见的问题.你不能拆箱装箱的T比其他任何东西T或T?.

我在这里解释原因:

http://ericlippert.com/2009/03/03/representation-and-identity/