Как получить фактический элемент из HashSet?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить фактический элемент из HashSet?

Сообщение Anonymous »

Я прочитал вопрос о том, почему это невозможно, но не нашел решения проблемы.

Я хотел бы получить элемент из .NET HashSet. Я ищу метод, который будет иметь эту подпись:

Код: Выделить всё

/// 
/// Determines if this set contains an item equal to 
,
/// 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
/// , then the item from the set is returned.
/// 
bool TryGetItem(T item, out T foundItem);
Поиск элемента в наборе с помощью такого метода будет O(1). Единственный способ получить элемент из HashSet — это перечислить все элементы, то есть O(n).

Я не нашел ни одного обходной путь этой проблемы, кроме создания собственного HashSet или использования Dictionary. Есть еще идеи?

Примечание:

Я не хочу проверять, работает ли HashSet< /code> содержит элемент. Я хочу получить ссылку на элемент, хранящийся в HashSet, поскольку мне нужно его обновить (без замены другим экземпляром). Элемент, который я бы передал в TryGetItem, был бы равен (согласно механизму сравнения, который я передал конструктору), но это не была бы та же ссылка.

Подробнее здесь: https://stackoverflow.com/questions/776 ... m-hashsett
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»