代码之家  ›  专栏  ›  技术社区  ›  Eric Ouellet

如何在不禁用代码中的错误消息的情况下消除编译错误“CS8601可能的空引用赋值”

  •  0
  • Eric Ouellet  · 技术社区  · 5 年前

    Ref1

    但对于像这样的泛型:

        public static T PerfomIO<T>(Func<T> function, T defaultValue = default)
        {
            try
            {
                return function();
            }
            catch (IOException)
            {
            }
    
            return defaultValue;
        }
    

    我想在这里支持空值。我不想禁用错误消息。我想按它应该的方式来编程。

    我尝试在许多方面添加Nullable,但都没有成功。 我尝试[全部]都没有成功

    enter image description here

    0 回复  |  直到 5 年前
        1
  •  0
  •   Eric Ouellet    5 年前

    我发现了一些技巧,虽然我不知道为什么这个项目被迫“空检查”。我在.csproj或项目和解决方案的其他地方没有发现任何可能强制执行空检查的参数的跟踪。

    我找到了两种解决问题的方法:

    • 解决方案1:可以在.cs文件的开头添加下一行:

      #可空禁用

    • default default! 哪里有“!”告诉编译器不要考虑可空检查。

    我当前使用“default!”。

    同样作为参考,如果您的项目强制执行空检查,但您在项目或解决方案中找不到该选项,请参阅本文: Customize your build