c# - 正确覆盖 [NotNull] 属性

标签 c# inheritance resharper

我继承自 ArrayList 并覆盖 Add 方法(见下文)。 奇怪的是 Add() 方法将对象值参数标记为 [NotNull] 并且 documentation说“这个值可以是空引用”。

无论如何,我现在将其标记为 [CanBeNull](通过 ReSharper 注释属性)。 但是 IntelliSense 仍然为我提供了将参数标记为 [NotNull] 的缓存文档。

为什么不覆盖文档?

/// <summary>
/// Bla bla
/// </summary>
/// <param name="value">
/// This Attribute is marked as CanBeNull.
/// </param>
/// <returns></returns>
public override int Add([CanBeNull] object value)
{
    if (value != null)
    {
        // Do sth.
    }
}

最佳答案

尽管使用 [CanBeNull] 覆盖的 [NotNull] 属性受到 ReSharper 的可空性分析的尊重,并且也显示在 Ctrl+Shift+F1 窗口中,但 ReSharper 错误地忽略了它们在参数信息中。

我创建了 RSRP-447900 .

关于c# - 正确覆盖 [NotNull] 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414231/

相关文章:

c++ - 返回类型与返回类型 (operator++) 不相同也不协变

c++ - 为什么派生类可以拥有与基类相同的数据成员?

c# - ToString 和字符串连接 - 意外行为

c# - 求助foreach,得到 'possible multiple enumeration of IEnumerable'

c# - Resharper 源模板添加空语句

c# - 如何使用 itextsharp 在 pdf 中仅设置表格的垂直线?

c# - EF6 存储过程必须声明标量变量

java - Spring 数据 JPA( hibernate ): How do I retrieve a concrete entity using only a field in its abstract superclass?

c# - 优化验证码(避免重复检查)

c# - 将标准 C++ 字符串编码为 C# 字符串时出现问题