Как определить другой экземпляр объекта? - PullRequest
1 голос
/ 04 января 2012

Предположим, у меня есть такой класс:

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

, тогда я могу создать экземпляр этого класса:

MyClass instance1 = new MyClass();

При отладке кода, каким бы он ни был,всегда проходить через один и тот же код.Как определить, совпадает ли экземпляр с другими, особенно для какого-либо системного объекта .NET?Например, служба WCF Ria имеет базовый класс DomainContext, как я могу узнать, является ли экземпляр DomainContext новым или таким же для приложения?

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Если ваш вопрос заключается в том, как определить, какую ссылку вы просматриваете в методе экземпляра, вы можете добавить this в свой список наблюдения, а затем щелкнуть правой кнопкой мыши на записи списка наблюдения и выбрать «Создать идентификатор объекта», который будет пометить ссылку с уникальным идентификатором.

Выполните шаги в этом похожем вопросе SO: Определение уникальных ссылок в отладчике

Если ваш вопрос заключается в том, как определить, совпадают ли две ссылки, вы можете использовать ReferenceEquals () для их сравнения (или ==, если вы знаете, что он не был перегружен для данного типа).

1 голос
/ 04 января 2012

В целях отладки вы можете просто нумеровать ваши экземпляры так:

public class MyClass{
  private static int instanceCounter = 0;

  private int instanceNumber;

  public MyClass(){
        instanceNumber = Interlocked.Increment(instanceCounter);
  }
  ...
}
0 голосов
/ 04 января 2012

Все экземпляры имеют какой-то идентификатор. В правильно реализованном классе (или классе, который не переопределяет хеш-функцию), получение хеш-кода будет указывать, является ли экземпляр тем же или другим. В некоторых случаях строковое представление объекта по умолчанию будет состоять из имени класса и идентификатора для конкретного экземпляра. Простая печать экземпляра на консоли может быть достаточной, чтобы отделить экземпляры друг от друга.

...