c# - 理解可能的空引用返回
问题描述
我开始通过 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
?解决此问题的最佳方法是什么?
解决方案
它在文档中有所描述
退货
与指定谓词定义的条件匹配的第一个元素(如果找到);否则,类型 T 的默认值。
所以 returnT?
或者可能??
用于返回一个非空值。
关于相同的签名,在代码中您可以看到:
[return: MaybeNull]
public T Find(Predicate<T> match)
指定即使相应类型不允许输出也可以为空。
推荐阅读
- microsoft-translator - 作业/文件在培训中停留超过 24 小时
- c - 在C中的for循环内打印一次
- batch-file - 批处理 - 尝试回显大于号 (>) 时出现语法错误
- c# - 如何解决当前上下文中不存在名称“connectionclass”?
- azure-ad-b2c - Azure AD B2C 与 Restful API 集成
- javascript - Javascript:为什么这段代码会立即迭代直到数组的最后一个值?
- javascript - 如何以“htmlElement#idName.className.anotherClassName”格式拆分字符串?
- excel - 快速访问工具栏图标的文件名
- r - r plotly subplot 使用超过 20 个地块?
- json - 在 Solr 中索引 JSON 文件名以及 JSON 内容