c# - 在调用扩展方法后,如何让 resharper 知道我的变量不为空?

标签 c# resharper

我有一个扩展方法:

public static bool Exists(this object toCheck)
{
   return toCheck != null;
}

如果我使用它然后做这样的事情:

if (duplicate.Exists())
    throw new Exception(duplicate);

然后 resharper 警告我可能存在空引用异常。

我知道这是不可能的,但我如何告诉 resharper 这没问题?

最佳答案

您可以使用契约(Contract)注释来做到这一点,但另一个答案中提供的方式对我不起作用(即 - 仍然会产生警告)。但是这个有效:

public static class Extensions {
    [ContractAnnotation("null => false; notnull => true")]
    public static bool Exists(this object toCheck) {
        return toCheck != null;
    }
}

要获取 ContractAnnotationAttribute - 推荐的方法是安装 JetBrains.Annotations nuget 包。如果您不想安装包 - 转到 Resharper > 选项 > 代码注释并按“将实现复制到剪贴板”按钮,然后将其粘贴到项目中的任何位置(确保不更改命名空间)。

关于c# - 在调用扩展方法后,如何让 resharper 知道我的变量不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44658747/

相关文章:

c# - Linq 查询不会从另一个对象中的对象返回结果

c# - 显示属性和描述属性之间的区别

c# - 如何获得超过 2 个内核的 CPU 使用率?

c++ - CLion IDE 是否包含 ReSharper C++ 在 Visual Studio 下提供的所有功能?

方法参数的 C# @ 修饰符

c# - 类似于语法高亮的 Resharper

c# - 尝试将 SQL 中的 varbinary(MAX) 值转换为 byte[] 并在 asp 图像控件中显示

c# - 将字符串解析为动态类型的最快、高效、优雅的方式?

c# - Resharper 和命名空间别名限定符

wpf - 重构 WPF MVVM 以提高可测试性