微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解新的可为空引用类型警告

如何解决了解新的可为空引用类型警告

启用可为空引用类型后,以下行会生成警告:

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 返回不可为空的 string。这是因为对于 .NET Standard MSDN 确实说 'ToString' 返回非空值。看起来在所描述的情况下,Intellisense 将从 .NET Standard 程序集中窥视 infromatino。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。