首页 > 解决方案 > 理解可能的空引用返回

问题描述

我开始通过 VS19 预览收到这些警告

<TargetFramework>net5.0</TargetFramework>
<LangVersion>preview</LangVersion>`
<Nullable>enable</Nullable>

这是一个类的示例,它代理了它的许多方法ImmutableList<T>

class C<T> {
  readonly ImmutableList<T> composed;
  public C() => composed = ImmutableList<T>.Empty;
  ...
  public T Find(Predicate<T> match) => composed.Find(match);
  ...
}

警告 CS8603:可能返回空引用。对于Find方法

我不明白为什么,因为它具有相同的签名ImmutableList<T>.Find?解决此问题的最佳方法是什么?

标签: c#c#-8.0nullable-reference-typesc#-9.0

解决方案


它在文档中有所描述

退货

与指定谓词定义的条件匹配的第一个元素(如果找到);否则,类型 T 的默认值。

所以 returnT?或者可能??用于返回一个非空值。

关于相同的签名,在代码中您可以看到:

[return: MaybeNull]
public T Find(Predicate<T> match)

github上的代码

以及[MaybeNull]的文档

指定即使相应类型不允许输出也可以为空。


推荐阅读