Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 后期代码影响早期代码,调试器进入代码块,它不应该';我不能进去_C#_Control Flow - Fatal编程技术网

C# 后期代码影响早期代码,调试器进入代码块,它不应该';我不能进去

C# 后期代码影响早期代码,调试器进入代码块,它不应该';我不能进去,c#,control-flow,C#,Control Flow,我有以下代码 var len = request.Code.Trim().Length; if (len.Equals(0)) { throw new ArgumentOutOfRangeException("request.Code"); } try { var obj = _repository.GetSomething(request.Code); return Result.Success(obj); } catch (Exception) { retu

我有以下代码

var len = request.Code.Trim().Length;
if (len.Equals(0))
{
    throw new ArgumentOutOfRangeException("request.Code");
}

try
{
    var obj = _repository.GetSomething(request.Code);
    return Result.Success(obj);
}
catch (Exception)
{
    return Result.Failure(MessageCode.MissingData);
}
我正在使用调试器(通过单元测试)运行这段代码,当len为3时,它将进入
if(len.Equals(0))
块。我还尝试将if语句更改为
if(string.IsNullOrWhitespace(request.code))
,我遇到了同样的问题

如果我删除try/catch并将代码留在try块中,那么一切都很好

那么,谁能解释一下这里到底发生了什么

编辑: 澄清请求的值。代码为“WH1”,因此len为3。这是调试程序在我尝试跳过if语句之前告诉我的

编辑2: 我得到了一个失败的测试,这正是导致我调试这段代码的原因。但是现在测试通过了,我修改了另一段问题中没有显示的代码。现在我所有的测试都通过了,但是当我调试它时,调试器看起来仍然像是在第一个if块中执行抛出。非常令人困惑,但如果我越过声明,它会像我预期的那样继续下去


这似乎是调试器中的某种错误,因为代码没有被执行,只是光标指向了该代码,而没有对其执行任何操作。

如果代码与正在调试的代码不匹配,我以前就遇到过这种情况。您是使用“附加到进程”调试进程,还是只需进入“调试”菜单并选择“开始调试”(F5)?上面显示的代码是正在调试的项目的一部分,还是在相关程序集中


您还可以尝试重新生成整个解决方案。

代码根本没有运行,调试器只是转到该行,但没有实际执行代码。

您的问题是什么?request.Code的值是多少?您期望的检查结果是什么:if(string.IsNullOrWhitespace(request.Code))?@DavidePiras我对我的问题做了一些澄清。您没有隐藏的;在if语句之后-可能在屏幕右侧?@Jimmy-好主意,但不是。正如我所说的,如果我删除try/catch,问题就会消失。我只是在我的编辑器中确认并删除了右括号和左括号之间的所有内容。只是检查一下:您确定在进行更改后重新编译了代码,对吗?您是如何确定这是您的问题的?当我查看手表时,我可以看到代码没有实际执行