在调试时,有没有办法判断一个对象是否是另一个实例?

时间:2013-03-22 19:59:52

标签: c# debugging visual-studio-2012

调试时,我期待两个不同的类使用相同的对象实例。这两个对象的所有属性都相同,但它们是两个不同的实例。有没有办法在VS调试器中告诉它?

为了确定,我能够在课堂上添加一个字段:

private string someId = Guid.NewGuid().ToString();

然后,在调试时,我至少可以查看两个实例中每个实例的字段。有没有更好的方法不需要创建这个虚拟ID字段?

3 个答案:

答案 0 :(得分:45)

调试时,在Locals窗口中,右键单击实例并选择“Make Object ID”。

这将添加此实例唯一的编号,只要您看到此编号,就会显示该编号 调试器中的实例(在工具提示中以及在监视窗口中)。

enter image description here

enter image description here

答案 1 :(得分:5)

Object.Equals Method (Object, Object)

编辑:要检查参考相等性,请使用ReferenceEquals

编辑2:调试时,转到调试菜单,窗口 - >即时窗口(intellisense应该在这里工作)和?Object.ReferenceEquals(obj1, obj2)

答案 2 :(得分:1)

除了上面的答案,你还可以比较指针。如果您有两个对象obj1obj2,则可以使用&obj1&obj2检查(例如在观看窗口中)他们的地址。

请注意,对象可能会被.NET运行时移动,因此对同一对象进行两次地址检查,并在其间执行某些代码,这可能会导致不同的地址。

相关问题