加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:43:09 所属栏目:百科 来源:网络整理
导读:如果一个对象初始化为null,则为 not possible to get the type information,因为引用不指向任何内容. 但是,当我调试并且我将鼠标悬停在一个变量上时,它显示类型信息.只显示静态方法,但是似乎知道类型.即使在发布版本. 调试器是否使用其他信息,而不仅仅是反映
如果一个对象初始化为null,则为 not possible to get the type information,因为引用不指向任何内容.

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

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读