首页 > 解决方案 > 了解新的可为空引用类型警告

问题描述

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

public string ConvertToString(object value) => value.ToString();

警告 CS8603:可能返回空引用。

但我不确定为什么。参数不可为空,ToString()返回string而不是string?,那么这段代码怎么可能有一个空引用返回呢?

标签: c#.net.net-5c#-8.0nullable-reference-types

解决方案


根据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。


推荐阅读