【发布时间】:2015-08-16 22:57:00
【问题描述】:
我有不区分大小写的HashSet<string>:
private HashSet<string> a = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
我很好奇现在是否可以在实际情况下提取字符串。我需要的伪代码:
return a.Contains(word) ? a[word] : null;
(只是一个伪代码,它不会工作)
例如,我在 HashSet 中有字符串“TestXxX”。我需要将“testxxx”(或“tEsTXXx”)作为输入并返回“TestXxX”的代码。
我当前的解决方法是改用Dictionary<string,string> 并为键和值输入相同的值。这显然不优雅,并且消耗了实际需要的 2 倍内存。
【问题讨论】:
-
集合通常不包含索引。你要么必须切换到
List<T>,要么创建一个派生自KeyedCollection<T, T>的强类型类 -
如果您不再需要该集合,您可以
IntersectWith(new [] { word })并迭代结果,我想。但这显然不是一个通用的解决方案:克隆套装只是为了获得一件物品是不必要的工作。