Когда вы отлаживаете, есть ли способ узнать, является ли объект другим экземпляром?
При отладке я ожидал, что два разных класса будут использовать один и тот же экземпляр объекта. Все свойства были одинаковыми для этих двух объектов, но они были двумя разными экземплярами. Есть ли способ сказать это в отладчике VS?
Чтобы точно сказать, я смог добавить поле в класс:
private string someId = Guid.NewGuid().ToString();
Затем, при отладке, я мог бы хотя бы взглянуть на это поле для каждого из двух экземпляров. Есть ли лучший способ, который не включал бы создание этого поля фиктивного идентификатора?
Ответы
Ответ 1
При отладке в окне "Локали" щелкните правой кнопкой мыши экземпляр и выберите "Сделать идентификатор объекта".
Это добавит номер, уникальный для этого экземпляра, который отображается всякий раз, когда вы видите этот экземпляр в отладчике (в подсказках, а также в окне часов).
![enter image description here]()
![enter image description here]()
Ответ 2
Метод Object.Equals (объект, объект)
Изменение: для проверки ссылочного равенства используйте ReferenceEquals
Редактирование 2: Отладка, откройте отладочное меню, окно → ближайшее окно (intellisense должно работать здесь) и ?Object.ReferenceEquals(obj1, obj2)
Ответ 3
В дополнение к приведенным выше ответам вы также можете сравнить указатели. Если у вас есть два объекта obj1
и obj2
, вы можете проверить (например, в окне просмотра) свои адреса с помощью: &obj1
и &obj2
.
Обратите внимание, что объекты могут перемещаться вокруг среды выполнения.NET, поэтому две проверки адреса одного и того же объекта, разделенные некоторым выполнением кода, могут приводить к разным адресам.