在C#中是否有类似Dictionary <>的类,但对于只是键,没有值?

Chu*_*bur 55 c# dictionary key list

我想另一种表达方式的方法是"是否有类似List<>C#的类,但是为了检查特定值是否存在而进行了优化?" 我确信一小部分值List<>.Contains可能会很好,但是如果我有一组数千或数百万的值并且想知道某个值是否在其中呢?

我过去通过创建一个Dictionary<object, int>并为每个键设置值为0来实现这种事情,但这感觉非常笨重.而现在有Stack Overflow,我的愚蠢问题可以转化为成千上万的教育(甚至几十年).所以在这里!

我甚至不确定这样一个类会被调用,除了可能Set,所以显然搜索主题已经...挑战:)

Jak*_*ake 68

尝试使用该HashSet<T>课程.

编辑:我花了很长时间完成你所做的事情,直到我在阅读博客时偶然发现了这个课程.

  • 回到.NET 1.0和2.0的黑暗时代,我们只创建了一个基本上像HashSet一样的类,但在下面使用了<TKey,byte>的字典. (3认同)
  • @Jeff:你让我感到怀旧.我不确定这是件好事. (3认同)
  • 请注意,您无法像字典一样访问 HashSet 索引器。假设你的密钥是一个字符串,你就不能在字典中执行 `myHash["mykey"]` 操作。 (3认同)
  • 此外,在.NET 4中,这个类现在实现了新的`ISet <T>`接口,以及它的新表兄`SortedSet <T>`,它是相同的,但具有顺序语义. (2认同)
  • @Jeff在这里,虽然我们使用<T,bool> (2认同)