我尝试:
var err = (string)null;
Run Code Online (Sandbox Code Playgroud)
(我更喜欢string? err=null;)
我得到
警告 CS8600:将 null 文字或可能的 null 值转换为不可为 null 的类型。
但 的 类型err已正确设置为可为 null 的字符串,在 Visual Studio 中将鼠标悬停在该字符串上即可明显看出。
这个警告是无效的吗?
假设您打开了可为空的引用类型,则警告正确地指出您正在转换null为不可为空的类型 - string。err它与不可为空的类型无关。err 可以为null,就像vars 始终一样。
如果您改为转换为可为空的string?类型,则警告就会消失:
var err = (string?)null;
Run Code Online (Sandbox Code Playgroud)