如何识别不同的对象实例?

时间:2012-01-04 14:36:06

标签: c# wcf-ria-services

假设我有一个类:

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

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

MyClass instance1 = new MyClass();

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

3 个答案:

答案 0 :(得分:2)

如果您的问题是如何在实例方法中判断您正在查看哪个引用,则可以将this添加到监视列表,然后右键单击监视列表条目并选择“生成对象ID”它将使用唯一ID标记引用。

按照此类似SO问题中的步骤操作:Identifying Unique References in Debugger

如果您的问题是如何判断两个引用是否相同,您可以使用ReferenceEquals()来比较它们(如果您知道该类型没有超载,则可以使用==。)

答案 1 :(得分:1)

出于调试目的,您可以简单地为您的实例编号:

public class MyClass{
  private static int instanceCounter = 0;

  private int instanceNumber;

  public MyClass(){
        instanceNumber = Interlocked.Increment(instanceCounter);
  }
  ...
}

答案 2 :(得分:0)

所有实例都有某种标识符。在正确实现的类(或不覆盖散列函数的类)中,获取散列码将指示实例是相同还是不同。在可能的情况下,对象的默认字符串表示将由类名和特定实例的标识符组成。只需将实例打印到控制台就可以将实例分开。