C# 识别哪个 属性 在 Visual Studio 中的对象初始化中导致空引用异常

C# Identify Which Property Caused a Null Reference Exceptions in Object Initialization in Visual Studio

假设我正在一次初始化一个具有许多属性的新对象。其中之一会导致空引用异常,但是当您使用调试器时,它会立即通过整个代码初始化块。有什么简单的方法可以找到导致错误的 属性 吗?请注意,对象属性可能有多种类型,因此某些类型允许为空。

ex 对象初始化

var obj = new Obj{
prop1 = x,
prop2 = y,
prop3 = f,
prop4 = r,
prop5 = h,
prop6 = k,
prop7 = w,
prop8 = l,
prop8 = m,
prop9 = e,
prop10 = a 
};

其中一个属性导致了空引用异常,但您不知道是哪个属性导致调试器一次通过了整个块。有没有一种方法可以用 visual studio?

来识别它?

考虑检查您的浏览器并注意哪个 属性 是空的。 我的建议

在赋值 obj 上设置断点并打开 Locals window。观察分配给 obj 属性的变量值。除此之外,Visual Studio 本身在这方面没有太多内置功能可以帮助您(我知道或目前可以回忆起),除了工具提示。

这是对象和列表初始化器的最大缺点。如果您要分配给很多属性,那么正如您所观察到的,异常会在初始化块的第一行抛出。这令人难以置信 烦人,并且会使事情难以追踪。

如果您有幸使用相当先进的重构插件(如 Resharper 或 CodeRush),应该有一个重构将对象初始值设定项转换为直接 属性 分配并再次返回。这将允许您将对象初始值设定项转换为 属性 赋值,调试代码以便您可以快速隔离问题陈述,解决它,然后将代码转换回对象初始值设定项。