如果我只需要快速查找键,我应该使用C#字典吗?值是无关紧要的?

ref*_*med 41 c# lookup dictionary

我需要一种能够插入条目的数据类型,然后能够快速确定是否已插入条目.A Dictionary似乎适合这种需要(见例).但是,我对字典没用values.我还应该使用字典还是有其他更适合的数据类型?

public class Foo
{
    private Dictionary<string, bool> Entities;

    ...

    public void AddEntity(string bar)
    {
        if (!Entities.ContainsKey(bar))
        {
            // bool value true here has no use and is just a placeholder
            Entities.Add(bar, true);
        }
    }

    public string[] GetEntities()
    {
        return Entities.Keys.ToArray();
    }

}
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 84

你可以用HashSet<T>.

HashSet<T>类提供高性能的设置操作.集合是一个不包含重复元素的集合,其元素没有特定的顺序.

  • 是的,但如果信息因其他原因有用,`HashSet <T> .Add()`返回一个`bool`,表示该项是否已成功添加(之前没有) (21认同)
  • 请注意,与字典不同,在添加之前无需检查是否存在. (15认同)
  • @ pinkfloydx33不知道的!刚刚设法从我们的系统中删除了大约30行代码,因为我们编写了一个帮助方法,就是这样做的!谢谢 (5认同)
  • @MatthewSteeples在这种情况下,我觉得我应该提到`HashSet <T> .Remove`的工作方式相同.它返回一个`bool`; 如果找到并删除了该项,则为"true",否则为"false".没有异常抛出,不需要调用`Contains`. (5认同)