如何识别对象的不同实例
本文关键字:实例 对象 何识别 识别 | 更新日期: 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);
}
...
}
所有实例都有某种类型的标识符。在一个正确实现的类(或一个不覆盖哈希函数的类)中,获取哈希代码将指示实例是相同还是不同。在某些情况下,对象的默认字符串表示将由特定实例的类名和标识符组成。简单地将实例打印到控制台就足以区分实例。