在 C# 中是不是有像 Dictionary<> 这样的类,但只有键,没有值?

Posted

技术标签:

【中文标题】在 C# 中是不是有像 Dictionary<> 这样的类,但只有键,没有值?【英文标题】:Is there a class like Dictionary<> in C#, but for just keys, no values?在 C# 中是否有像 Dictionary<> 这样的类,但只有键,没有值? 【发布时间】:2011-01-24 08:27:21 【问题描述】:

我想另一种表达方式是“C# 中是否有类似List&lt;&gt; 的类,但已针对检查是否存在特定值进行了优化?”我确信对于一小组值List&lt;&gt;.Contains 可能没问题,但是如果我有一组数千或数百万个值并想找出其中是否包含某个值呢?

我过去通过创建Dictionary&lt;object, int&gt; 并将每个键的值设置为0 来实现这种事情,但这感觉非常笨拙。现在有了 Stack Overflow,我的愚蠢问题可以转化为数千人(甚至数十人)的教育。所以就在这里!

我什至不确定这样的类会被称为什么,除了 Set,所以显然对该主题的搜索一直......具有挑战性:)

【问题讨论】:

C# Data Structure Like Dictionary But Without A Value 的可能重复项 【参考方案1】:

尝试使用HashSet&lt;T&gt; 类。

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

【讨论】:

此外,在 .NET 4 中,此类现在实现了新的 ISet&lt;T&gt; 接口,以及它的新表亲 SortedSet&lt;T&gt;,它是相同的,但具有顺序语义。 回到 .NET 1.0 和 2.0 的黑暗时期,我们刚刚创建了一个基本上像 HashSet 一样工作的类,但在下面使用了一个 字典。 @Jeff 在这里相同,虽然我们使用了 @Jeff:你让我感到怀旧。我不确定这是一件好事。 请注意,您不能像字典那样访问 HashSet 索引器。假设你的键是一个字符串,你不能在字典中做myHash["mykey"]

以上是关于在 C# 中是不是有像 Dictionary<> 这样的类,但只有键,没有值?的主要内容,如果未能解决你的问题,请参考以下文章

C# 中是不是有像 C++ 这样的指针?安全吗?

在 C# 中使用非常大的 Dictionary<>

是否有像 C++ 中那样带有分隔符的 C# 原始字符串?

C#在Dictionary中使用枚举作为键

如何在 C# 中将 Dictionary<string, object> 转换为 Dictionary<string, string>

C# Dictionary 是不是有可能返回一个完全错误的值。