Я столкнулся с ошибкой, которую не могу исправить. После некоторого исследования переполнения стека казалось, что нулевой оператор объединения будет решением моей проблемы, но это не помогло. Вот код, который выдает ошибку:
List<OperationsReviewLevelResult> results = new List<OperationsReviewLevelResult>();
foreach (var approval in OperationsReviewers.ApprovalItems)
{
var result = new OperationsReviewLevelResult();
result.ApproverName = approval.Results.FirstOrDefault().Name ?? "";
result.ReviewLevel = approval.Name;
result.Comment = approval.Results.FirstOrDefault().Comments ?? "";
results.Add(result);
}
Когда я запускаю этот код, я получаю:
Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта.
Исходя из строки result.ApproverName = approval.Results.FirstOrDefault().Name ?? "";
. Я добавил оператор объединения нулей, чтобы проверить наличие нулевых значений, но это не решает мою проблему. Ошибка в том, что в утверждении нет Results
, поэтому я предположил, что метод FirstOrDefault
linq вернет значение по умолчанию, а когда он поймет, что значение по умолчанию имеет нулевое значение для Name
, он будет использовать оператор объединения нулей чтобы вернуть ""
пустую строку в правой части оператора.
Пожалуйста, дайте мне знать, если я что-то упустил, так как я не могу понять, почему я получаю эту ошибку, даже при добавлении нулевого слияния оператор.
Редактировать: Как показано в комментарии, просмотр этой записи помог мне узнать больше, почему я получил эту ошибку. Хотя вопросы немного отличаются, я настоятельно рекомендую прочитать ответ, чтобы получить полное представление о моей проблеме.