Eri*_*let 13 c# parameters default nullable compiler-errors
从 C# 8.0 开始,默认情况下标准是不可为 null 的变量。参考1
但对于像这样的泛型:
public static T PerfomIO<T>(Func<T> function, T defaultValue = default)
{
try
{
return function();
}
catch (IOException)
{
}
return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)
如何摆脱当我尝试传递“default”时出现的编译错误“CS8601可能的空引用分配”?
我想在这里支持空值。我不想禁用错误消息。我想按照应有的方式对其进行编程。
我尝试以多种方式添加 Nullable 但没有成功。我尝试 [AllowNull] 但没有成功
Eri*_*let 18
我发现了一些技巧,尽管我不知道为什么该项目被迫“可空检查”(找到并详细信息如下)。我查看了 .csproj、.sln 和其他地方,没有找到任何可以强制进行空检查的参数。
我找到了两种方法来解决我遇到的问题:
解决方案 1:您可以在 .cs 文件的开头添加下一行:
#可空禁用
解决方案 2:将参数从 更改为default告诉default!编译!器不要考虑可为空检查的位置。
我目前使用default!.
另外仅供参考,如果您的项目强制进行 null 检查,但您在项目或解决方案中找不到该选项,那么请查找这篇文章:自定义您的构建,也许您会找到为什么强制进行 null 检查。(自 2019 年以来都是新的)。
| 归档时间: |
|
| 查看次数: |
10403 次 |
| 最近记录: |