Ошибка, отображаемая в отладчике, не означает, что box
равно null
.Если бы box
было null
, оно буквально просто сообщило бы: null
.
Вместо этого box
не является null
, и что-то, что отладчик оценивает для отображениязначение вызывает исключение.Возможно сломанный ToString()
.Тот факт, что в нем упоминается ListDictionaryInternal
, означает, что вы, возможно, захотите , в частности , узнать о любом использовании коллекции или словаря внутри типа и, возможно, обо всем, что помечено атрибутами "отладчика", такими как [DebuggerDisplay(...)]
.
Если вы хотите проверить, является ли box
значением null
, спросите ближайшую консоль:
box == null
, и она вернет true
или false
(предостережение: предполагая, что не существует сломанного оператора статического равенства, что также возможно; во избежание этого хорошей альтернативой является:
box is object
, который будет надежно возвращать true
, если это не null
, и false
, если это null
, без использования операторов статического равенства.
Редактировать: основываясь на обсуждении в комментариях, яубедительно убежден, что это неработающий оператор ==
, как показано здесь: