### Add ```csharp public bool Add(T item); ``` Этот метод добавляет элемент в HashSet\<T\>, если он еще не присутствует.  Если элемент уже есть в множестве, метод просто возвращает false и никакого исключения не вызывает. Как и для словаря, обычное время выполнения составляет O(1), но в худшем случае может достигать O(n) при повторной хешировке. ### Remove ```csharp public bool Remove(T item); ``` Если элемент (который мы хотим удалить) не был найден, то метод вернет `false`. Занимает константное время, то есть `O(1)`. ### Перезапись элемента В `HashSet` в C# нельзя напрямую "перезаписать" элемент, потому что `HashSet` представляет собой коллекцию уникальных объектов, и в нём не предусмотрена индексация элементов, как, например, в списке (`List`). Если вам нужно изменить элемент в `HashSet`, вам сначала нужно удалить существующий элемент, а затем добавить новый, изменённый элемент. ### UnionWith (аналог AddRange) > Осторожно, метод [[HashSet'1.UnionWith()|аллоцирует]] память в кучу ### Equals Сравнивает две коллекции по ссылке, а не по содержимому коллекций. Это означает, что даже если две коллекции содержат одинаковые элементы, метод `Equals` вернет `false`, за исключением случая, когда обе переменные ссылаются на один и тот же объект в памяти.