Resharper 有没有办法告诉R#在我运行一个a方法之后,某些类变量赢了';不能为空

Resharper 有没有办法告诉R#在我运行一个a方法之后,某些类变量赢了';不能为空,resharper,Resharper,考虑以下代码: public class TestClass { public int? NullableInt { get; set; } private bool DoPreChecks() { if(NullableInt == null) return false; return true; } public bool DoTest() { if(!DoPreCh

考虑以下代码:

public class TestClass
{
    public int? NullableInt { get; set; }

    private bool DoPreChecks()
    {
        if(NullableInt == null)
            return false;

        return true;
    }

    public bool DoTest()
    {
        if(!DoPreChecks())
            return false;

        //Here R# tells me that "nullableInt" may be null
        if (NullableInt.Value > 10)
        {
            // Do something
        }

        return true;
    }
}
当我在“DoTest”中引用“NullableInt.Value”时,担心“NullableInt.Value”可能为null是正确的,除非它为null,否则“DoPreChecks”将返回false,这意味着我永远不会到达这一行。我在看R#的代码注释,我看到我可以告诉它在有限的条件下预期的输出,这似乎是我可以在这里利用的东西,但我看不到任何方法告诉它,当输出为true/false/null/notnull时,然后是一个类变量(与输入或输出无关)将具有特定的值类型(true/false/null/notnull)。这样的事情可以做吗

这里的用例是这样的——我有十几个方法都依赖于相同的前提条件,包括几个正在初始化的类变量。我不想在每个方法中都进行这些检查,而是想让它们都运行“DoPreChecks”方法,如果它返回true,我们就可以开始了。问题是R#不能遵循这一点,认为我有很多可能的空引用异常。我可以:

  • 完全忽略错误,只是容忍到处都是扭曲的线条
  • 禁用并恢复这些方法开头和结尾处的警告
  • 一次禁用警告1行
  • 每次使用前进行空检查或断言
  • 每个问题都是

  • 违反公司政策,忽略警告
  • 在大量代码上禁用此检查比忽略单个警告更糟糕,因为可能存在其他有效问题,但会被禁用
  • 这将需要大量的R#注释,从而否定dopreecks方法的有用性
  • 与#3相同

  • 现在我倾向于在政策上获得一个例外,而只是忽略警告,但如果有办法告诉R#发生了什么,那将是一个更好的解决方案。是否可以在不添加参数或使返回类型复杂化的情况下完成此操作?

    在ReSharper中没有设置方法返回值与字段/属性为空之间关系的约定注释