【问题标题】:How to debug a coalescing null statement that involves method calls如何调试涉及方法调用的合并空语句
【发布时间】:2020-06-20 12:39:24
【问题描述】:

我有如下声明:

var instance = GetLastActiveInstance() ?? AppInstance.FindOrRegisterInstanceForKey(App.Id.ToString());

当我在上述语句处下断点并单步执行时,如何知道?? 运算符选择了左侧还是右侧?这有什么诀窍吗?我正在使用 Visual Studio 2019,但我也很高兴听到 VS Code 的解决方案。

如果两侧中的任何一个都使用了变量,我可以将鼠标悬停在变量上并查看其值。但是对于方法调用,唯一的解决方案似乎是首先将至少一个方法调用的结果分配给一个临时变量。但当然,这会导致代码修改。

【问题讨论】:

  • 你可以在这两个方法中设置断点吗?或者当你在线时你按下 F11
  • @MickyD 这不起作用,语句拆分为多行仍会导致单个断点。
  • @viveknuna 是的,这是一个很好的观点。我想知道是否有一种方法(Visual Studio 提供的某种技巧)可以工作,而无需进入各个方法。不过,谢谢。
  • @MickyD 我在回复你之前已经尝试过了。请看这里:imgur.com/1aEmZDN

标签: c# visual-studio debugging


【解决方案1】:

你可以在这两种方法中设置断点吗?或者当你在线时你按下 F11

【讨论】:

  • 我尝试了 F11 方法。执行跳转到GetLastActiveInstance() 方法。我调试了那个方法,发现它返回了null。然后回到?? 语句,再次按F11 并没有将我带入第二种方法(FindOrRegisterInstanceForKey())。没问题,只是 Visual Studio 假定在进入第一种方法后,您不会对同一行的任何其他方法感兴趣。 :)
  • @Sabuncu 那不正确。如果第一个方法返回 null,它将进入第二个方法。请再次检查
  • 我明白发生了什么。 FindOrRegisterInstanceForKey() 是框架的一部分,没有它的来源。 F11 没有进入它,因为它不能。谢谢你让我直截了当。
猜你喜欢
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多