我对ConcurrentBag<T>
和List<T>
有一个理解问题,作为存储某些值的底层集合。Resharper ConcurrentBag <T> AssignNullToNotNull,但不包含在列表中<T>
我正在写一个类,它应该是枚举,我想遍历垫层ConcurrentBag<T>
,但ReSharper的告诉我,return _items.GetEnumerator();
是:
可能“空”分配给实体标有“NOTNULL”属性
这是什么原因?
代码示例:
public class MyClass : IEnumerable<Item> {
private readonly ConcurrentBag<Item> _items;
public MyClass() {
_items = new ConcurrentBag<Item>();
}
public IEnumerator<Item> GetEnumerator() {
if(_items == null)
throw new InvalidOperationException("Error.");
return _items.GetEnumerator(); // AssignNullToNotNull
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}
ReSharper的告诉我,一切都很好用:
List<T>
,而不是ConcurrentBag<T>
。return ((IEnumerable<ITranslationItem>)_items).GetEnumerator();
什么毛病我的方法?
谢谢!