如何识别对象的不同实例

本文关键字:实例 对象 何识别 识别 | 更新日期: 2023-09-27 18:19:30

假设我有一个类,比如:

public class MyClass{
  public MyClass(){
    ...
  }
  ...
}

然后我可以创建一个类的实例,比如:

MyClass instance1 = new MyClass();

当调试代码时,无论实例是什么,它总是经过相同的代码。如何识别实例是否与其他实例相同,尤其是对于某些.NET系统对象?例如,WCF Ria Service有一个基类DomainContext,我如何知道DomainContext的实例对于应用程序是新的还是相同的?

如何识别对象的不同实例

如果你的问题是如何判断你在实例方法中查看的引用,你可以将this添加到你的观察列表中,然后右键单击观察列表条目并选择"生成对象ID",它将用唯一ID标记引用。

遵循这个类似SO问题中的步骤:识别调试器中的唯一引用

如果你的问题是如何判断两个引用是否相同,你可以使用ReferenceEquals()来比较它们(或者==,如果你知道它没有被重载)。

出于调试目的,您可以简单地对实例进行编号,如下所示:

public class MyClass{
  private static int instanceCounter = 0;
  private int instanceNumber;
  public MyClass(){
        instanceNumber = Interlocked.Increment(instanceCounter);
  }
  ...
}

所有实例都有某种类型的标识符。在一个正确实现的类(或一个不覆盖哈希函数的类)中,获取哈希代码将指示实例是相同还是不同。在某些情况下,对象的默认字符串表示将由特定实例的类名和标识符组成。简单地将实例打印到控制台就足以区分实例。