Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么只有在VS2010中调试时cast才会始终返回零?_C#_Visual Studio_Visual Studio 2010 - Fatal编程技术网

C# 为什么只有在VS2010中调试时cast才会始终返回零?

C# 为什么只有在VS2010中调试时cast才会始终返回零?,c#,visual-studio,visual-studio-2010,C#,Visual Studio,Visual Studio 2010,只有在我的机器上才会发生这种情况。 基本上,如果我按预期运行以下各项: double d = 500.22; int i = (int)d; Console.WriteLine(i.ToString()); 产量是500 但是,如果我在第一行上放置一个断点并逐步执行,我总是返回到零,并且输出为0 我已经在其他机器上测试过了,但我无法复制,我甚至重新安装了VS2010,但这种情况仍然存在。所以我想这一定是我系统上的某种环境设置,但我不知道是什么 其

只有在我的机器上才会发生这种情况。 基本上,如果我按预期运行以下各项:

        double d = 500.22;
        int i = (int)d;
        Console.WriteLine(i.ToString());
产量是500

但是,如果我在第一行上放置一个断点并逐步执行,我总是返回到零,并且输出为0

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

其他人都有这个问题,我该如何解决它

干杯

编辑:问题似乎只出现在第二行。如果我在第1行放一个断点,然后在上面放F5,那么一切都没问题。但是,如果我进入/越过第二行,则铸造似乎不起作用,而我保持在0。
我还尝试先将I设置为1,然后查看强制转换是否有效,但它将I更改回0并删除我的初始值1

以下是一个屏幕截图:


尝试使用
/SafeMode
/ResetSettings
命令行参数运行VS

是否有所有最新的.NET Framework服务修补程序?甚至在4.0框架中也有一些,尽管我还没有听说过类似的东西

*编辑*

关于我的其他建议,强制转换为int会截断并转换为Convert.ToInt32轮,因此Convert.ToInt32通常是您想要的(尤其是在它工作的情况下)

请注意,在屏幕截图中,您没有输出i,而是输出d——您实际上没有使用i。我无法重新编程您描述的行为,但如果我在发布模式下在WriteLine上放置断点,我会很接近:在这种情况下,我甚至不存在。但为什么要这样,你没有用它。(请注意,我使用了屏幕截图中的代码进行复制,而不是实际使用的代码。)

您是跳过了还是跳过了?如果您的意思是跨入还是跳过,那么我两者都做了。您能提供屏幕截图吗?你是说当鼠标悬停时,调试器在工具提示中声明i==0?或者它在监视窗口中声明i==0?还是即时窗口?发生这种情况时,你的代码在哪里?在Console.WriteLine处中断?请澄清,您是否在监视窗口中看到i为0,还是因为Console.WriteLine正在输出0?这是一个愚蠢的问题,因为Console.WriteLine应该写我是什么,但我应该是500在第一位。。。因此,我们需要准确地确定哪一部分表现出了严重的错误。您是否有可能在启用优化的情况下进行编译?如果没有实际使用局部变量i,那么优化器可能会将其从程序中完全删除;这会使调试器非常困惑。我的值可能为零,因为我没有存储空间。(虽然在这种情况下,调试器通常会说“没有像我这样的东西”,而不是报告它的值为零。)感谢您的建议,但是仍然会发生同样的事情。我认为我完全了解最新情况,因为运行windows update没有发现任何问题。这是一个好观点,我没有意识到铸造会截断,不会旋转。我一直想知道区别是什么。干杯。哎呀,对不起。是的,我做了一个修改,看看它能做什么,但还是一样的问题。无论如何,这是无关的,因为问题是第二行,而不是控制台行。我将尝试重新发布您的发布模式问题,然后查看。