假设我有一个类:
public class MyClass{
public MyClass(){
...
}
...
}
然后我可以创建类的实例,如:
MyClass instance1 = new MyClass();
调试代码时,无论实例是什么,它总是通过相同的代码。如何确定实例是否与其他实例相同,特别是对于某些.NET系统对象? 例如,WCF Ria Service有一个基本类DomainContext,如何知道DomainContext的实例对于应用程序是新的还是相同的?
答案 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)
所有实例都有某种标识符。在正确实现的类(或不覆盖散列函数的类)中,获取散列码将指示实例是相同还是不同。在可能的情况下,对象的默认字符串表示将由类名和特定实例的标识符组成。只需将实例打印到控制台就可以将实例分开。