¿Cómo recuperar el elemento real de HashSet <T>?

He leídoesta pregunt sobre por qué no es posible, pero no he encontrado una solución al problema.

Me gustaría recuperar un elemento de un .NETHashSet<T>. Estoy buscando un método que tenga esta firma:

/// <summary>
/// Determines if this set contains an item equal to <paramref name="item"/>, 
/// according to the comparison mechanism that was used when the set was created. 
/// The set is not changed. If the set does contain an item equal to 
/// <paramref name="item"/>, then the item from the set is returned.
/// </summary>
bool TryGetItem<T>(T item, out T foundItem);

Buscar el conjunto de un elemento con dicho método sería O (1). La única forma de recuperar un elemento de unaHashSet<T> es enumerar todos los elementos que es O (n).

No he encontrado ninguna solución a este problema, aparte de hacer mi propiaHashSet<T> o use unDictionary<K, V>. ¿Alguna otra idea?

Nota
No quiero comprobar si laHashSet<T> contiene el artículo. Quiero obtener la referencia al elemento que está almacenado en laHashSet<T> porque necesito actualizarlo (sin reemplazarlo por otra instancia). El elemento que pasaría a laTryGetItem sería igual (según el mecanismo de comparación que le he pasado al constructor) pero no sería la misma referencia.

Respuestas a la pregunta(11)

Su respuesta a la pregunta