可能重复:
Why can't I retrieve an item from a HashSet without enumeration?
我需要向Set添加很多对象。我应该非常快速地检索它们。我知道的唯一方法是使用哈希。但是C#中的HashSet类不包含任何“Get”方法。字典类没用,因为在字典中查找对象非常耗时。
答案 0 :(得分:12)
HashSets主要用于测试对象是否包含在集合中。它是无序的和未排序的,没有可用于检索对象的索引。
如果您需要存储和检索对象,请使用其他集合类型,如List,HashTable等。
答案 1 :(得分:1)
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;
}
}
}