【发布时间】:2020-05-27 18:15:42
【问题描述】:
像这样初始化一个类:
var x = new Item()
{
ID = (int)...,
Name = (string)...,
..
};
我在其中一项作业中收到 InvalidCastException。它们有很多,即使我逐行运行调试器,整个表达式也会出现异常。该异常并没有提供任何线索,也没有给出它试图转换为什么的任何线索。
有没有办法单独调试每个作业?我已经看到调试器在 foreach(x in y) 这样的表达式上分别停止了 3 次,所以在这里没有这样做似乎有点奇怪,并且降低了使用这种方便的初始化语法的吸引力。也许我可以使用更细粒度的调试步骤?
【问题讨论】:
-
您可以访问
Item的源代码吗?你能在ID、Name的设置器上设置断点吗? -
@JeffE 实际上是的,我猜。如果我在 evert setter 上设置断点,我至少可以看到最后一个被调用的。不理想但很好的想法,比注释掉代码或试错更好:)
-
没有办法按照你的要求去做(至少在我使用的 VS 2017 中)。另一个想法是使用 Ctrl-K/Ctrl-C 快速注释掉对象初始化代码块。如果您以二分搜索方式执行此操作,您可以快速找到有问题的属性。
-
如果您想缩小有问题的分配范围,为什么不尝试对每个属性或至少对其中一些属性进行逐行分配。 ------- var x = new Item(); x.ID = (int)...; x.Name = (string)...; ... ----- 如果我误解了您的问题,我深表歉意。
-
抱歉,我没听懂您的意思...如果您在谈论错误处理,请参考:Exception Handling (C# Programming Guide) 和此:Best practices for exceptions
标签: c# visual-studio-2017 vscode-debugger