Получить объект из hashset в С#

Возможный дубликат:
Почему я не могу получить элемент из HashSet без перечисления?

Мне нужно добавить много объектов в Set.and, я должен получить их очень быстро. Единственный способ, который я знаю, - использовать хэш. Но класс HashSet в С# не содержит метода Get. Класс словаря не полезен, поскольку поиск объекта очень трудоемкий в словаре.

Ответы

Ответ 1

HashSets в основном используются для проверки того, включен ли объект в коллекцию. Это un-orderd и un-sorted, не имеет индекса, который можно было бы использовать для извлечения объекта.

Если вам нужно хранить и извлекать объекты, используйте другие типы коллекций, такие как List, HashTable и т.д.

Ответ 2

HashSet представляет собой ряд значений. Вы можете посмотреть, установлено ли определенное значение в наборе с помощью Contains(). Словарь предназначен для хранения объектов и получения его хешем (ключом).

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        public enum EnumA
        {
            One,
            Two,
            Three,
            Four
        }

        static void Main(string[] args)
        {
            HashSet<EnumA> test = new HashSet<EnumA>();

            test.Add(EnumA.Four);

            Console.WriteLine("Contains one:");
            Console.WriteLine(test.Contains(EnumA.One));
            Console.WriteLine("Contains four:");
            Console.WriteLine(test.Contains(EnumA.Four));
            Console.WriteLine();
            Console.ReadLine();

            return;
        }
    }
}