错误警告将 null 文字或可能的 null 值转换为不可为 null 的类型

kof*_*fus 0 c#

我尝试:

var err = (string)null;
Run Code Online (Sandbox Code Playgroud)

(我更喜欢string? err=null;


我得到

警告 CS8600:将 null 文字或可能的 null 值转换为不可为 null 的类型。

但 的 类型err已正确设置为可为 null 的字符串,在 Visual Studio 中将鼠标悬停在该字符串上即可明显看出。

这个警告是无效的吗?

Swe*_*per 5

假设您打开了可为空的引用类型,则警告正确地指出您正在转换null为不可为空的类型 - stringerr它与不可为空的类型无关。err 可以为null,就像vars 始终一样

如果您改为转换为可为空string?类型,则警告就会消失:

var err = (string?)null;
Run Code Online (Sandbox Code Playgroud)