了解新的可空引用类型警告
Understanding the new nullable reference types warning
启用可空引用类型后,以下行会生成警告:
public string ConvertToString(object value) => value.ToString();
warning CS8603: Possible null reference return.
但我不确定为什么。参数不可为空,ToString()
returns string
而不是 string?
,那么这段代码怎么可能有一个空引用 return?
根据 MSDN Object.ToString
returns 可空字符串 (string?
).
public virtual string? ToString ();
所以,现在警告变得完全清楚了 - 你的函数被声明为 returning 非空字符串,但实际上它 return 是 ToString
调用的结果,可能为空。
更新:
经过一些额外的检查后,我们发现,如果项目同时针对 .NET Standard 和 .NET 5.0,Intellisense 将显示 ToString
return 不可为空 string
。这是因为对于 .NET Standard,MSDN 确实表示 'ToString' return 是非空的。在所描述的情况下,看起来像 Intellisense 将从 .NET 标准程序集中查看信息。
启用可空引用类型后,以下行会生成警告:
public string ConvertToString(object value) => value.ToString();
warning CS8603: Possible null reference return.
但我不确定为什么。参数不可为空,ToString()
returns string
而不是 string?
,那么这段代码怎么可能有一个空引用 return?
根据 MSDN Object.ToString
returns 可空字符串 (string?
).
public virtual string? ToString ();
所以,现在警告变得完全清楚了 - 你的函数被声明为 returning 非空字符串,但实际上它 return 是 ToString
调用的结果,可能为空。
更新:
经过一些额外的检查后,我们发现,如果项目同时针对 .NET Standard 和 .NET 5.0,Intellisense 将显示 ToString
return 不可为空 string
。这是因为对于 .NET Standard,MSDN 确实表示 'ToString' return 是非空的。在所描述的情况下,看起来像 Intellisense 将从 .NET 标准程序集中查看信息。