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