27

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

为了确定,我能够在类中添加一个字段:

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

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

4

3 回答 3

55

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

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

在此处输入图像描述

在此处输入图像描述

于 2013-03-22T20:10:37.013 回答
5

Object.Equals 方法(对象,对象)

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

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

于 2013-03-22T20:01:25.113 回答
2

除了上面的答案,您还可以比较指针。如果您有两个对象obj1和,您可以使用:和obj2来检查(例如在监视窗口中)它们的地址。&obj1&obj2

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

于 2015-08-10T23:57:22.690 回答