C# 空条件运算符与LINQ

C# 空条件运算符与LINQ,c#,C#,这是我的代码(用于net core项目): 如果用户的RelatedEntityCanBeNull为null,则抛出NullReferenceException。为什么表达式不返回null 等待操作符需要一个可等待的任务对象。Null条件运算符返回Null,而await Null将导致NullReferenceException 您必须将代码更改为 List list = null; if (user?.RelatedEntityCanBeNull != null) list = awai

这是我的代码(用于net core项目):


如果用户的RelatedEntityCanBeNull为null,则抛出NullReferenceException。为什么表达式不返回null

等待操作符需要一个可等待的
任务
对象。Null条件运算符返回
Null
,而
await Null
将导致
NullReferenceException

您必须将代码更改为

List list = null;
if (user?.RelatedEntityCanBeNull != null)
   list = await user.RelatedEntityCanBeNull.ToListAsync();


谈到访问
user
属性,它不应该是
user?.RelatedEntityCanBeNull?.toListSync()?您访问
user
时不使用null条件运算符,它为null,并给出一个错误。但是,我不确定
await
如何处理
null
任务。我怀疑这是因为您正在这里等待一个null
任务。@Yeldar Kurmangaliyev,我明确检查了用户。不可能重复使用
user.RelatedEntityCanBeNull.GetValueOrDefault().toListSync()
(如果可用)或
wait(user.RelatedEntityCanBeNull?.toListSync()?Task.FromResult(null))更简洁。@停止cran您的决定,让它退出手动空检查,即使表达式中有长链属性,如:user.First?.Second?。。。伟大的
List list = null;
if (user?.RelatedEntityCanBeNull != null)
   list = await user.RelatedEntityCanBeNull.ToListAsync();
var list = user?.RelatedEntityCanBeNull == null ? null : await user.RelatedEntityCanBeNull.ToListAsync();