C# 这是真的!=是真的,还是AccessViolationException奇怪

C# 这是真的!=是真的,还是AccessViolationException奇怪,c#,exception,logic,C#,Exception,Logic,在编写代码时,我遇到了一个奇怪的情况,我的if返回true,即使测试显然是false。我已经对代码进行了简化,以查看是否遗漏了一些内容,但是抛出AccessViolationException()仍在执行 bool valid = true; if (valid != true) { throw new AccessViolationException("WTF"); } AccessViolationException是否具有奇怪的功能,或者我的计算机是否已经出了问题 编辑:“dum

在编写代码时,我遇到了一个奇怪的情况,我的
if
返回true,即使测试显然是false。我已经对代码进行了简化,以查看是否遗漏了一些内容,但是
抛出AccessViolationException()
仍在执行

bool valid = true;
if (valid != true)
{
    throw new AccessViolationException("WTF");
}
AccessViolationException
是否具有奇怪的功能,或者我的计算机是否已经出了问题

编辑:“dumbed down”意味着我去掉了所有额外的函数,这就是我留下的代码。这几行是我应用程序中内容的复制和粘贴。这是我真正的密码

编辑2: 我清理了解决方案,重建,重新启动

代码当前看起来像这样,我仍然遇到同样的问题,
if
返回true

bool valid = true;
if (valid != true)
{
    throw new Exception("WTF");
}
另一个函数中的类似代码按预期工作。
上面的代码正是目前我函数中的代码。

我很确定,您的代码不是您计算机上运行的代码。 出于某种奇怪的原因,编译器没有编译您的代码(很好),而您以前的一些版本正在运行。 重建(正如一条评论中提到的)是一个很好的尝试,但不确定是否成功。 相反:

  • 退出Visual Studio
  • 删除项目目录中的“bin”和“obj”文件夹
  • 再次打开VS和您的项目
  • 笑,跑,开心

  • 奇怪的是,答案是删除现有代码(变量声明和后面的if语句)。重新编译。 再次插入代码。重新编译


    我不知道这是什么原因,但至少我可以重新编码。

    将AccessViolationException更改为Exception。仍在遇到问题。您的实际
    if
    条件一定有问题。要么不是您的实际代码,要么您在黑市上以30美元的价格购买了c#编译器和人类肝脏。
    有效
    是局部变量还是字段?它是否与其他线程共享?请尝试清理并重建您的项目。我可以向您保证,这是我的代码。最初的代码要有趣得多,但是由于这个错误,我删除了代码中的所有内容,以确定发生了什么。这些代码是我留下的。我相信你在这里发布的代码是真实的代码。只需看看编译器“与您一起玩”。出于优化的原因,编译器不会每次都编译所有内容,只编译更改的内容。可能编译器没有识别出您的某些更改。如果是这个问题,那么删除bin和obj会有帮助。我删除了bin文件夹,但没有删除obj文件夹。“干净的解决方案”不会杀死obj文件夹吗?无论如何,我认为编译器有点困惑。我们都有。