是否为真!=真,或者AccessViolationException是否奇怪

本文关键字:是否 AccessViolationException 或者 | 更新日期: 2023-09-27 18:09:35

在编写代码时,我遇到了一个奇怪的情况,我的if返回真,即使测试显然是假的。我已经简化了代码,看看我是否错过了什么,但throw AccessViolationException()继续执行。

bool valid = true;
if (valid != true)
{
    throw new AccessViolationException("WTF");
}

AccessViolationException有奇怪的能力,还是我的电脑走远了?

编辑:"简化"意味着我拿走了所有额外的函数,这是我留下的代码。这几行是我的应用程序的复制和粘贴。这是我的真实代码

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

代码目前看起来像这样,我仍然得到同样的问题,其中if返回true。

bool valid = true;
if (valid != true)
{
    throw new Exception("WTF");
}

在另一个函数中的类似代码按预期工作。上面的代码正是我现在的函数。

是否为真!=真,或者AccessViolationException是否奇怪

我很确定,你的代码不是那个,是什么在你的计算机上运行。由于一些奇怪的原因,编译器不能(很好地)编译您的代码,并且运行您以前的一些版本。重建(正如在一条评论中提到的)是一个很好的尝试,但不确定它是否成功。而不是:

  1. 退出Visual Studio
  2. 删除项目目录下的bin和obj文件夹打开VS和你的项目,再次打开编译,运行,然后开心。

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

我不知道是什么原因造成的,但至少我可以再次编码。