Ссылка на объект не установлена на экземпляр объекта

#c# #object-reference

#c# #ссылка на объект

Вопрос:

Получение этой ошибки в этом коде:

 string pname = null;
pname = ag.FirstOrDefault().arrangement.parent.name;
  

при вызове строки pname = ag.FirstOrDefault…..

Поданный parent.name пуста (null), что нормально, в таком случае я хочу получить пустую (null) строку. Как я могу избавиться от ошибки?

Ответ №1:

Либо ag равно null, FirstOrDefault вызов возвращает null, arrangement равно null, либо parent равно null.

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

Комментарии:

1. 1 Я бы рекомендовал использовать debuger или разделить его на несколько инструкций.

Ответ №2:

Если свойство указано.FirstOrDefault().arrangement.parent.name равно null, это означает, что ag объекта также равен null. Это причина, по которой вы получаете ошибку ссылки на объект.

Предоставленный Леонсом ответ на самом деле является тем, что я собирался предложить. Вам нужно провести некоторое исследование проблемы, которой проще всего избежать (попытка ссылаться на нулевой объект) в программировании.

Комментарии:

1. Это не обязательно означает, что ag равно нулю. ag может быть нулевым; выходные данные FirstOrDefault могут быть нулевыми; arrangement элемент может быть нулевым; parent элемент может быть нулевым.

Ответ №3:

Вы не можете получить доступ к свойствам нулевого объекта. Если указано.FirstOrDefault() вернет null, тогда вы не сможете получить доступ arrangement .

 var temp = ag.FirstOrDefault();
string pname = (temp!= null) ? temp.arrangement.parent.name : null;
  

Возможно, вам потребуется выполнить дальнейшую проверку null.

Ответ №4:

попробуйте

 var obj = ag.FirstOrDefault();
if( obj !=null)
pname = obj.arrangement.parent.name ?? String.Empty;
  

или вы можете попробовать

 //This will set the variable to null:
  var obj = ag.FirstOrDefault();
    if( obj !=null)
    pname = Convert.ToString(obj.arrangement.parent.name);
  

Примечание: ag.FirstOrDefault().arrangement.parent.name является обнуляемым типом

Комментарии:

1. Это вызовет исключение, если ag.FirstOrDefault() вернет null

2. Поданный parent.name пуста (null) — эта строка написана op в любом случае, я обновляю свой ans