Есть ли способ отслеживать один экземпляр в C# /. NET в Visual Studio при отладке? Я считаю, что это было бы действительно полезно иногда.Отслеживать экземпляр в C#?
Другой способ взглянуть на это будет точкой останова на экземплярах, а не на коде. Поэтому каждый раз, когда мой экземпляр доступен и/или модифицируется, выполнение останавливается, и мне предоставляется строка кода, которая обращается/изменяет мой экземпляр.
В C++ эквивалентность будет контролировать часть памяти, где находится экземпляр, или просто указатель на экземпляр. Этот подход не работает с управляемым кодом, поскольку объекты в .NET перемещаются, поэтому мне нужна эквивалентность для указателей на C++.
Я знаю о WeakReferences в C#, но я не уверен, что они могут использоваться во время отладки?
Редактировать 1: Этот вопрос отличается от «При отладке, есть ли способ определить, является ли объект другим экземпляром?», Поскольку мне не интересно сравнивать две ссылки, но я хочу получить доступ к одному объекту.
Это весьма не работает. Если есть переменная с тем же именем, эта переменная будет показана. Кроме того, если моя переменная не соответствует контексту, часы ничего не показывают. Таким образом, окно просмотра имеет конкретную область действия. –
Правильно, вам просто нужно сформулировать выражение часов в соответствии с тем, где вы хотите посмотреть экземпляр. Внутри класса это может быть «MyProperty», но снаружи это просто «instance.MyProperty». Ваш вопрос: «Есть ли способ отслеживать один экземпляр в C# /. NET в Visual Studio при отладке?» и это действительно самый простой способ сделать это. Если вы передаете экземпляр вокруг, это означает, что больше выражений для учета нового имени, но этот подход хорошо подходит для большинства ситуаций отладки. – Colin
Что делать, если «экземпляр» в настоящее время недоступен из области, от которой я отлаживаю? Я просто хочу, чтобы глобальный способ доступа к одному и тому же объекту, какой бы ни выглядел мой callstak. Опять же, на C++ я могу просто сохранить адрес, т. Е. Указатель, и я всегда могу найти объект, но в указателях C# бесполезны вне небезопасной области. –