Как проверить причину, по которой значение свойства становится «нулевым» - PullRequest
1 голос
/ 26 октября 2011

У меня есть такая собственность

Когда я отлаживаю, я вижу, что m_displayType становится null. Кто-нибудь может сказать мне, как проверить причину этого? Я проверил все ссылки на DisplayType, кроме этого, любым способом, который я пропустил.

Ответы [ 5 ]

2 голосов
/ 26 октября 2011

Установите точку останова в установщике свойств и посмотрите на стек вызовов.

0 голосов
/ 26 октября 2011

Помимо отладки и просмотра стека, чтобы увидеть, откуда вызывается DisplayType, вам нужно убедиться, что вы не меняете значение, используя поле m_displayType вместо свойства. Вы можете найти все ссылки в VS в поле m_displayType и в свойстве DisplayType, чтобы увидеть, где они используются. Кроме того, есть ли причина, по которой вы определяете поле m_displayType как защищенное, а не личное?

0 голосов
/ 26 октября 2011

Поскольку value в установщике может быть null, вы можете подумать, что вы устанавливаете его на ноль.

m_displayType != value

С учетом приведенной выше строки, если value равно null, а m_displayType нет, то условие выполнено и m_displayType = value будет эквивалентно m_displayType = null.

Что касается того, как его отладить, как уже говорили другие, установите точку останова (выберите соответствующую строку и нажмите F9 , я полагаю) - затем запустите и пошагово просматривайте код, это позволит вам Посмотрите, как выполняется строка за строкой, и посмотрите, что равно null и как оно применяется к m_displayType.

Существует также вероятность того, что m_displayType устанавливается в другом месте: если он защищен, это означает, что наследники могут напрямую манипулировать значением, поэтому вы нашли все ссылки на базовую переменную свойства и проверили их соответствующим образом?

0 голосов
/ 26 октября 2011

Установите точку останова в установщике.Перейдите в окно точек останова (Debug-> Windows-> Breakpoints).Щелкните правой кнопкой мыши точку останова и выберите «Условие ...».Добавьте «value == null» и оставьте «True» отмеченным.

0 голосов
/ 26 октября 2011

вам нужно поставить точку останова в установщике .... которая даст значение, является ли оно нулевым или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...