我正在使用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)
它的工作原理与预期一致.
为什么它会在一个设置中工作但在另一个设置中失败?
这是一个非常常见的问题.你不能拆箱装箱的T比其他任何东西T或T?.
我在这里解释原因:
http://ericlippert.com/2009/03/03/representation-and-identity/
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |