### 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`, за исключением случая, когда обе переменные ссылаются на один и тот же объект в памяти.