代码检查:可能将 '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日