c# - 了解新的可为空引用类型警告
问题描述
启用可空引用类型后,以下行会生成警告:
public string ConvertToString(object value) => value.ToString();
警告 CS8603:可能返回空引用。
但我不确定为什么。参数不可为空,ToString()
返回string
而不是string?
,那么这段代码怎么可能有一个空引用返回呢?
解决方案
根据MSDN Object.ToString
返回可为空的字符串 ( string?
)。
public virtual string? ToString ();
所以,现在警告变得完全清楚了——你的函数被声明为返回非空字符串,但实际上它返回了ToString
调用的结果,它可能是空的。
更新:
经过一些额外的检查,我们发现如果一个项目同时针对 .NET Standard 和 .NET 5.0,Intellisense 将显示ToString
返回 non-nullable string
。这是因为对于 .NET Standard , MSDN确实说“ToString”返回非空值。并且看起来在所描述的情况下,Intellisense 将从 .NET Standard 程序集中窥视 infromatino。
推荐阅读
- pip - `ansible --version` 命令抛出错误
- c# - 使用 Azure SignalR 时,无法加载 Microsoft.Extensions.Logging.Abstractions
- javascript - 如何避免在洪水填充算法期间超过最大调用堆栈大小?
- css - 按字符类更改 CSS 中的样式
- mysql - 选择具有总和的mysql数据
- node.js - 填充NodeJs MongoDB后获取数据
- docker - docker 多个阶段 - docker gradle 构建成功,但 docker openjdk 构建失败:复制失败:未指定源文件
- java - Eclipse 中的 Java 13 和 JavaFX 13
- html - 如何在不使用路径的情况下制作眼睛形状的 SVG?
- php - 在左连接中显示来自 master 的 1 个主键