c# - 为什么只有在VS2010中调试时cast总是返回零?

标签 c# visual-studio visual-studio-2010

只有在我的机器上才会发生这种情况。 基本上,如果我运行以下一切都符合预期:

        double d = 500.22;
        int i = (int)d;
        Console.WriteLine(i.ToString());

输出为 500。

但是,如果我在第一行放置一个断点并单步执行,我总是会恢复为零并且输出为 0。

我已经在其他机器上测试过了,我无法复制,我什至重新安装了 VS2010,但它仍然发生。所以我想这一定是我系统上的某种环境设置,但我不知道是什么。

其他人遇到过这个问题,我该如何解决。

干杯。

编辑:看来问题出在第二行。如果我在第一行放置一个断点,然后 F5 就可以了,那么就没问题了。但是如果我进入/越过第二行,转换似乎不起作用并且我停留在 0。
我还尝试先将 i 设置为 1,然后查看转换是否有效,但它会将 i 变回 0 并删除我的初始值 1。

截图如下:

alt text

最佳答案

您是否拥有所有最新的 .NET Framework 服务补丁?甚至还有一些用于 4.0 框架,尽管我还没有听说过这样的东西。

* 编辑 *
关于我的其他建议,强制转换为 int 截断和 Convert.ToInt32 轮次,因此 Convert.ToInt32 无论如何都是您通常想要的(特别是如果它正在工作)。

关于c# - 为什么只有在VS2010中调试时cast总是返回零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3979824/

相关文章:

visual-studio-2010 - 如何在内置于 sql server 的 Visual Studio 中自动增加主键?

c++ - 应用程序错误 - 调试 exe 无法运行

c# - 人工智能,文本分类器

asp.net - 设置 .net Web 应用程序的默认页面

c# - Visual studio 2010 Bing map 按经度和纬度查找位置

c# - 你能为 Visual C#.NET 解决方案推荐一个 .cvsignore 文件吗?

c# - 将子类转换为继承类

c# - x64 平台上调试器中奇怪的三元运算符行为

c# - 如何显示特定于文化的本地数字而不是阿拉伯数字?

javascript - 尝试使用 fetch api 和 C# Web API 上传图像