У меня проблема с пониманием 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();
Что-то не так с моим подходом?
Спасибо!