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

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

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

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

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

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

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

在此处输入图像描述

在此处输入图像描述

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

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

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

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

请注意,对象可能会被.NET运行时移动,因此对两个地址进行的两次地址检查可能会导致不同的地址。