c# – 调试器如何获取有关初始化为null的对象的类型信息?

前端之家收集整理的这篇文章主要介绍了c# – 调试器如何获取有关初始化为null的对象的类型信息?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果一个对象初始化为null,则为 not possible to get the type information,因为引用不指向任何内容.

但是,当我调试并且我将鼠标悬停在一个变量上时,它显示类型信息.只显示静态方法,但是似乎知道类型.即使在发布版本.

调试器是否使用其他信息,而不仅仅是反映某种类型来查找数据类型?怎么比我更了解它?如果知道这个,为什么不能showing the datatype in a NullReferenceException

解决方法

看起来你将引用的类型与它指向的值的类型混淆.引用的类型嵌入到DLL元数据中,并且可以由调试器轻松访问.还有相关PDB中存储的临时信息,调试器利用这些信息来提供更好的体验.因此,即使对于空引用,调试器也可以确定类型和名称等信息.

至于NullReferenceException.它也可以告诉你它正在查询字段/方法的类型…可能.我对CLR这部分的内部不熟悉,但似乎并不是一个固有的原因,为什么它不能这样做.

但是我不知道CLR的附加成本是值得的.我分享了一个对于空参考异常信息缺乏的沮丧.但是涉及的类型多于我想要的名字!我不在乎它是一个IComparable,我想知道它是leftCustomer.

名称是CLR并不总是有权访问它们的一部分,他们生活在PDB而不是元数据.因此,它不能为他们提供很高的可靠性(或速度)

猜你在找的C#相关文章