我正在尝试优化一块看起来像这样的.NET 2.0 C#代码:
Dictionary<myType, string> myDictionary = new Dictionary<myType, string>();
// some other stuff
// inside a loop check if key is there and if not add element
if(!myDictionary.ContainsKey(currentKey))
{
myDictionary.Add(currentKey, "");
}
Run Code Online (Sandbox Code Playgroud)
看起来像编写这段代码的人已经使用了字典,即使不需要(只有密钥用于存储唯一值列表),因为比搜索的myType对象列表更快.这似乎显然是错误的,因为只有字典的关键,但我试图了解什么是解决它的最佳方法.
问题:
1)我似乎明白,即使只使用.NET 3.5 HashSet,我也会获得良好的性能提升.它是否正确?
2)在.NET 2.0中优化上述代码的最佳方法是什么?为什么?
编辑:这是我试图优化的现有代码,它循环遍历数十万个项目,并且每个项目都调用一个ContainsKey.有一个更好的方法(即使在.NET 2.0中)!:)