使用System.Collections.ArrayList
时,可以将空实例添加到列表中。从文档中可以清楚地看出这一点:
现在,如果我启用ReSharper(Ultimate,v10.0.2),我会对Visual Studio中的方法签名进行以下更改:
因此,ReSharper似乎正在向该方法添加元数据,表明当文档明确指出它时,它不支持空值。
我认为这个想法是警告不要向ArrayList
添加空值,这可能有意义(尽管我不确定,因为它在文档中明确允许) 。)
但是,如果我定义一个这样的子类,就会出现问题:
public class ArrayListEx : ArrayList
{
public override int Add(object value)
{
if (value != null)
return base.Add(value);
return -1;
}
}
ReSharper现在会发出一个有潜在危险的警告:
在这里,可能会错误地认为语句value != null
可以替换为true
。但是只能使用ReSharper警告调用该方法,而不是编译或运行时错误。由于该警告可能会被忽略,因此 为空的声明为false。
所以,鉴于我已正确分析了这一点,我的问题是: