如何解决如何摆脱编译错误“CS8601可能的空引用分配”
从 C# 8.0 开始,标准默认是不可为 null 的变量。 Ref1
但是对于像这样的泛型:
public static T PerfomIO<T>(Func<T> function,T defaultValue = default)
{
try
{
return function();
}
catch (IOException)
{
}
return defaultValue;
}
如何摆脱当我尝试传递“default”时出现的编译错误“CS8601可能的空引用分配”?
我想在这里支持空值。我不想禁用错误消息。我想按照它应该的方式编程。
我尝试以多种方式添加 Nullable,但没有成功。 我尝试 [AllowNull] 没有成功
解决方法
我发现了一些技巧,虽然我不知道为什么项目被迫进行“可空检查”(在下面找到和详细信息)。我在 .csproj 或项目中的其他地方没有发现任何可能强制进行空检查的参数的解决方案和解决方案。
我找到了两种方法来解决我遇到的问题:
-
解决方案 1:您可以在 .cs 文件的开头添加下一行:
#nullable 禁用
-
解决方案 2:将参数从
default
更改为default!
,其中“!”告诉编译器不要考虑可空检查。
我目前使用“默认!”。
也作为参考,如果你的项目强制进行空检查,但在你的项目或解决方案中找不到该选项,那么找这篇文章:Customize your build,也许你会找到为什么要进行空检查是被迫的。 (自 2019 年以来全新)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。