JetBrains Rider 2025.2 Help

代码检查:可能将 'null' 分配给不可为 null 的实体

[NotNull] 属性引入了一种契约,用于指示特定符号绝不能为 null。

由于 [NotNull] 几乎可以在任何地方使用,因此在不同情况下,此检查可以帮助您发现 [NotNull] 带来的契约违规。 下面是几个示例:

  • [NotNull] 有助于在不进行额外 null 检查的情况下使用相应标记的符号。

    但是,当您使用 [NotNull] 标记您的公共成员时,您必须确保它们实际上从不返回 null。 一旦添加了注解,JetBrains Rider 将检查此契约是否有效:

    [NotNull] public object CreateNotNullableObject() { return null; // Warning: Possible 'null' assignment to entity with '[NotNull]' attribute }
  • [NotNull] 还可以作为参数的契约,例如,如果您检查参数并在 null 被传递时抛出 ArgumentNullException。 在这种情况下,如果用户尝试将 null 值传递给带注解的参数,JetBrains Rider 将警告他们:

    public static void Foo([NotNull] string param) { if(param == null) throw new ArgumentNullException(nameof(param)); // Do something with 'param' } void Test() { Foo(null); // Warning: Possible 'null' assignment to entity with '[NotNull]' attribute }

请注意,此检查不限于您源代码中使用 NotNull 标记的符号。 此注解也可以通过 外部注解 添加,并且在 .NET Framework 类库和其他常用库的相关符号中已经存在,因为这些库的外部注解已包含在 JetBrains Rider 安装中。

最后修改日期: 2025年 9月 26日