Я бы сказал, что это ошибка в Resharper.Тип HashSet<T>
предназначен для обработки значений null
.Это видно из изучения кода в отражателе.В частности, метод InternalGetHashCode
, который имеет явную проверку для null
и предоставляет хэш-код по умолчанию, равный 0.
Единственный случай, когда это может привести к возникновению проблемы, - для пользовательских IEqualityComparer<T>
переданных экземпляров.до HashSet<T>
, которые не учитывают значения null
.Я бы сказал, что это довольно редко, хотя null
проверки являются частью стандартного шаблона равенства для ссылочных типов в .Net.
Примечание: для ясности, я определенно не советую людям добавлять null
в свою коллекцию.Я бы на самом деле поощрял обратное.Просто указав, что по какой-то причине HashSet<T>
явно разрешает этот сценарий.