ReSharper将一个意外的NotNull属性添加到ArrayList中的方法参数

时间:2016-01-14 13:35:08

标签: c# resharper

使用System.Collections.ArrayList时,可以将空实例添加到列表中。从文档中可以清楚地看出这一点:

enter image description here

现在,如果我启用ReSharper(Ultimate,v10.0.2),我会对Visual Studio中的方法签名进行以下更改:

enter image description here

因此,ReSharper似乎正在向该方法添加元数据,表明当文档明确指出它时,它不支持空值。

我认为这个想法是警告不要向ArrayList添加空值,这可能有意义(尽管我不确定,因为它在文档中明确允许) 。)

但是,如果我定义一个这样的子类,就会出现问题:

public class ArrayListEx : ArrayList
{
    public override int Add(object value)
    {
        if (value != null)
            return base.Add(value);
        return -1;
    }
}

ReSharper现在会发出一个有潜在危险的警告:

enter image description here

在这里,可能会错误地认为语句value != null可以替换为true。但是只能使用ReSharper警告调用该方法,而不是编译或运行时错误。由于该警告可能会被忽略,因此 为空的声明为false。

所以,鉴于我已正确分析了这一点,我的问题是:

  • ReSharper是否可以将此元数据添加到参数中(当它与文档不符时)?
  • 不应该是副作用,ReSharper声称表达式总是正确的,那不一定是这样,会被认为是一个严重的错误吗?

0 个答案:

没有答案
相关问题