相关疑难解决方法(0)

如果在Visual Studio 2008中声明怪异

我遇到一个很奇怪的问题,我记录了我的会话因为我认为没有人会相信我.

我遇到了一个似乎处于非常基础的错误.这是一个单线程应用程序,我正在做的就是评估一个布尔值.

布尔值等于false,但if语句正在执行,好像它是真的......排序.你会明白我的意思.我已经清理了解决方案并重建了很多次.不知道发生了什么事.

我想要一些解释.

http://www.youtube.com/watch?v=ope9kxEyt4g

.net c# runtime

11
推荐指数
2
解决办法
1199
查看次数

如果声明工作不正确 - 反汇编对我没有任何解释

我遇到了一些非常奇怪的问题.

我正在开发一些连接到webservices的类库.该库由桌面应用程序使用.

在我现在的代码中:

Int32 errorCode32 = errorCode;
Int32 errorTimeout = 300;

if (errorCode32.Equals(errorTimeout) == false)
{
    System.Console.Out.WriteLine("aaa");
    return;
}
Run Code Online (Sandbox Code Playgroud)

其中errorCode等于300.所以乍一看它是可见的,如果errorCode == 300而不是if语句中的代码不应该被执行,因为它被定义为仅当errorCode不等于300时执行.

到目前为止一切都很清楚,但现在整个乐趣开始了.

应用程序正在运行,并执行上述代码片段的方法.errorCode等于300,预期的结果是应用程序不会在if语句中执行任何代码,因为整个语句是false.但实际上应用程序进入"if"并立即跳转到"return"语句.System.Console.Out ...永远不会执行.如果我用"throw new SomeException()"替换clean"return"语句

Int32 errorCode32 = errorCode;
Int32 errorTimeout = 300;

if (errorCode32.Equals(errorTimeout) == false)
{
    System.Console.Out.WriteLine("aaa");
    throw new SomeException();
}
Run Code Online (Sandbox Code Playgroud)

我会得到相同的结果.应用程序进入if语句(注意:[errorCode32.Equals(errorTimeout)== false]在我的情况下为false),不执行Console.Out ...但抛出SomeException.

我多次重建了所有内容,删除了所有二进制文件,我甚至从磁盘中删除了整个项目,并从存储库再次检索到清理文件夹.

我很困惑,我甚至反汇编代码,看看会发生什么(即使我不是汇编程序的专家).但结果对我来说很奇怪.

反汇编代码如下:

    50:                 Int32 errorCode32 = errorCode;
000000e5  mov         eax,dword ptr [ebp-50h] 
000000e8  mov         dword ptr [ebp-54h],eax 
    51:                 Int32 errorTimeout = 300;
000000eb  mov         dword ptr [ebp-58h],12Ch 
    52: 
    53:                 if (errorCode32.Equals(errorTimeout) …
Run Code Online (Sandbox Code Playgroud)

c# disassembly

5
推荐指数
1
解决办法
1275
查看次数

在If语句中评估了Bool错误

只是为了好奇

我的代码有这个问题.

在此输入图像描述

e被评估为false,(并且我知道通过查看数据库中的数据会变得错误),但if语句并不关心它,并假设为true,并且正在尝试抛出异常.

有什么想法吗?

编辑:

  • 没有; 在第16行的末尾.

  • 值false是正确的,我检查了数据库并且正确得到了false,这是预期的

  • 不期望的是得到例外
  • 是的,{}工作正常.但我想知道为什么这样不起作用.
  • 是的,清洁,构建,重建,一切,并获得相同
  • 不,我在调试时不更改代码.我的解决方案在x64,我无法做出改变

.net c# if-statement boolean visual-studio-2010

4
推荐指数
1
解决办法
1496
查看次数