Если null.Equals(null), почему я получаю исключение NullReferenceException
У меня есть следующая строка кода:
var selectedDomainID = lkuDomainType.EditValue.Equals(null)
? string.Empty
: lkuDomainType.EditValue;
Иногда это генерирует NullReferenceException
. Я не понимаю, почему. Разве не весь код моего кода проверяется на null
, и если так назначить string.empty
? Когда я проверяю DEBUG, он заявляет, что EditValue == null
, что мне не хватает?
Ответы
Ответ 1
Используйте lkuDomainType.EditValue == null
, иначе вы пытаетесь вызвать метод экземпляра для нулевого объекта. Но лучшим вариантом может быть lkuDomainType.EditValue ?? String.Empty
. Также следите за тем, чтобы lkuDomainType
был нулевым, если только это не класс, а не объект.
Ответ 2
Когда вы используете Object.Property
и Object
is undefined, вы разыскиваете нулевой указатель и почему вы получаете исключение. Вместо этого используйте:
var selectedDomainID = lkuDomainType.EditValue == null ? string.Empty : lkuDomainType.EditValue;
Ответ 3
Если EditValue
имеет значение null, вы не можете вызвать Equals
. В этом случае вам придется делать:
var selectedDomainID = lkuDomainType.EditValue == null ? string.Empty : lkuDomainType.EditValue;
Или вы можете упростить его, выполнив:
var selectedDomainID = lkuDomainType.EditValue ?? string.Empty;
Ответ 4
вы пытаетесь вызвать метод Equals для нулевого объекта - сделайте это следующим образом:
lkuDomainType.EditValue == null
Ответ 5
Проблема заключается в том, что вы используете объект, прежде чем проверять его значение null. Вы вызываете метод Equals
объекта, который терпит неудачу, если ссылка имеет значение null.
Вам нужно обменять lkuDomainType.EditValue.Equals(null)
на lkuDomainType.EditValue == null
.
Ответ 6
EditValue == null. Это означает, что там нет объекта. Вы не можете вызывать функции для нулевых объектов, даже если функция is.Equals().
Вам лучше сказать "(lkuDomainType.EditValue == null)" в этом случае.
Ответ 7
Здесь вы должны использовать String.IsNullOrEmpty. Вот так:
var selectedDomainID = String.IsNullOrEmpty(lkuDomainType.EditValue) ? string.Empty : lkuDomainType.EditValue;
Equals - это метод, который вы пытаетесь вызвать метод для нулевого объекта, который бросает исключение.
Ответ 8
когда EditValue имеет значение null, вы не можете вызвать метод Equals на нем, поэтому лучше всего использовать
lkuDomainType.EditValue == null ? string.Empty : lkuDomainType.EditValue;
Ответ 9
Если lkuDomainType.EditValue имеет значение null, тогда "lkuDomainType.EditValue.Equals(someObject)" совпадает с кодировкой "null.Equals(someObject)". Ну, очевидно, что "null" не имеет каких-либо членов или методов (это было бы неверно, если бы оно было). Вот почему вы получаете исключение NullReferenceException.
Большинство примеров из других сообщений будут работать, включая String.IsNullOrEmpty, который является методом, возвращающим логическое значение.