只有在我的机器上才会发生这种情况。 基本上,如果我运行以下一切都符合预期:
double d = 500.22;
int i = (int)d;
Console.WriteLine(i.ToString());
输出为 500。
但是,如果我在第一行放置一个断点并单步执行,我总是会恢复为零并且输出为 0。
我已经在其他机器上测试过了,我无法复制,我什至重新安装了 VS2010,但它仍然发生。所以我想这一定是我系统上的某种环境设置,但我不知道是什么。
其他人遇到过这个问题,我该如何解决。
干杯。
编辑:看来问题出在第二行。如果我在第一行放置一个断点,然后 F5 就可以了,那么就没问题了。但是如果我进入/越过第二行,转换似乎不起作用并且我停留在 0。
我还尝试先将 i 设置为 1,然后查看转换是否有效,但它会将 i 变回 0 并删除我的初始值 1。
截图如下:
最佳答案
您是否拥有所有最新的 .NET Framework 服务补丁?甚至还有一些用于 4.0 框架,尽管我还没有听说过这样的东西。
* 编辑 *
关于我的其他建议,强制转换为 int 截断和 Convert.ToInt32 轮次,因此 Convert.ToInt32 无论如何都是您通常想要的(特别是如果它正在工作)。
关于c# - 为什么只有在VS2010中调试时cast总是返回零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3979824/