【发布时间】:2023-04-11 03:45:01
【问题描述】:
我对 ConcurrentBag<T> 和 List<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();
我的方法有问题吗?
谢谢!
【问题讨论】:
标签: c# .net generics resharper ienumerable