初始化这样的类:
var x = new Item()
{
ID = (int)...,
Name = (string)...,
..
};
我在其中一项作业中收到InvalidCastException。它们很多,即使逐行运行调试器,整个表达式也会发生异常。异常也无法提供任何线索,它试图将其转换为什么。
是否有一种方法可以分别调试每个作业?我已经看到调试器在foreach(x in y)
之类的表达式上分别停止了3次,因此似乎有点奇怪,它不在此处执行此操作,并且降低了使用这种方便的初始化语法的吸引力。也许我可以使用更细粒度的调试步骤?
[不确定在VS 2017中这是否是一个选项,我只有2019年。在选项->调试->常规下的设置中,取消选中跳过属性和运算符。然后在初始值设定项上设置一个断点,并使用F11逐步执行它(逐步进入)。您将击中每个属性设置器,直到引发异常。
您的问题是“是否可以按成员调试结构/类初始化成员?”。]
所以,在前面,我不是直接回答措辞上的that
问题,因为当我仔细阅读您的帖子正文时,听起来最基本的问题是如何确定导致此问题的“吸烟线”根源InvalidCastException发生时就正确。我在类似情况下发现的是,如果可以在发生InvalidCastException的那一刻使Visual Studio中断,即在该特定行上
,那么调用栈和局部变量将更加直接和有用。[不幸的是,对于许多异常类型,Visual Studio默认设置抑制了'抛出时中断'。但是,为所有异常打开“抛出时中断”非常容易。只需从以下位置在Visual Studio的“例外”窗口中更改此默认设置:
对此:
这并非“总是”有帮助,但这是一个好的开始。为什么不先尝试快速分辨率是否可行,这很容易。希望这对您的情况有用。
如果我缺少某些内容,请原谅(如果那样的话,将删除,但使用这样的无效转换:
这次我将