我无法弄清楚这个空引用异常来自哪里



edit 进一步反思后,我决定在下面修改答案,以减少误解问题的可能性。

我在此 IEnumarable linq查询中获得了NullReferenceException

designations.ForEach(desg => 
desg.ModifiedBy.UserName = userNames.SingleOrDefault(name => 
  desg.ModifiedBy != null && name.Id == desg.ModifiedBy.Id) != null ? 
  userNames.SingleOrDefault(name => name.Id == desg.ModifiedBy.Id).UserName : 
  "Not Available");

我目前最好的猜测是,它来自上述代码的第三行上的以下语句:

desg.ModifiedBy != null && name.Id == desg.ModifiedBy.Id

运行时将NullReferenceExceptiondesg.ModifiedBy.Id上抛出。但是,我"知道" C#真实性评估短路(例如,参见,||操作员)。在这里,如果desg.ModifiedBy == null,那么我们永远不应该评估name.Id == desg.ModifiedBy.Id。但是,这似乎正在发生。这可能吗?

我认为您的价值分配为无效

desg.ModifiedBy.UserName = userNames.SingleOrDefault(name =>

最新更新