可能的空引用 return c# linq
possible null reference return c# linq
我有这个 linq 查询。它抱怨警告消息。
Warning CS8603: Possible null reference return
代码:
return await _applicationDbContext.Pies
.Include(x => x.Portions).AsSingleQuery()
.Include(x => x.Ingredients).AsSplitQuery()
.SingleOrDefaultAsync(x => x.Id == id);
此外,这使它变得丑陋,到处都是波浪形。
有什么办法可以解决吗?
查看了以下 SO 帖子,但不知道该怎么做。
SingleOrDefaultAsync()
完全按照方法名称中的内容进行操作,它会尝试查找单个条目,如果未找到,则 return 为默认值。
引用类型的默认值,您对象 Pie
在这种情况下为空,因此出现警告。
您可以 return Task<Pie?>
或者以某种方式处理空值。一种方法是使用 .SingleAsync()
代替,如果未找到任何内容,它将抛出 - 但因此它永远不会 return null.
方法 return 是 Task<Pie>
。
return ...
的末尾有 SingleOrDefaultAsync(...)
,这意味着如果它找不到匹配 id
的项目,它将 return default(Pie)
这将成为 null
.
您需要决定是否:
- 此方法可以 return null,然后将签名更改为
Task<Pie?>
让调用代码知道它可以 return null。
- 此方法不应 return null,使用
SingleAsync(...)
以便在找不到匹配的 id
时抛出运行时异常。
我有这个 linq 查询。它抱怨警告消息。
Warning CS8603: Possible null reference return
代码:
return await _applicationDbContext.Pies
.Include(x => x.Portions).AsSingleQuery()
.Include(x => x.Ingredients).AsSplitQuery()
.SingleOrDefaultAsync(x => x.Id == id);
此外,这使它变得丑陋,到处都是波浪形。
有什么办法可以解决吗?
查看了以下 SO 帖子,但不知道该怎么做。
SingleOrDefaultAsync()
完全按照方法名称中的内容进行操作,它会尝试查找单个条目,如果未找到,则 return 为默认值。
引用类型的默认值,您对象 Pie
在这种情况下为空,因此出现警告。
您可以 return Task<Pie?>
或者以某种方式处理空值。一种方法是使用 .SingleAsync()
代替,如果未找到任何内容,它将抛出 - 但因此它永远不会 return null.
方法 return 是 Task<Pie>
。
return ...
的末尾有 SingleOrDefaultAsync(...)
,这意味着如果它找不到匹配 id
的项目,它将 return default(Pie)
这将成为 null
.
您需要决定是否:
- 此方法可以 return null,然后将签名更改为
Task<Pie?>
让调用代码知道它可以 return null。 - 此方法不应 return null,使用
SingleAsync(...)
以便在找不到匹配的id
时抛出运行时异常。