我在项目中使用List<T>
,此列表包含数百个条目。我使用List.Contains方法相当多,这会伤害性能,我用字典替换了List但是它导致了内存瓶颈,从而使性能更差。是否有更好的解决方案可以建议在List中搜索?在C#2.0中是否有HashSet<T>
的替换或者其他一些内存和速度更好的方式?
答案 0 :(得分:6)
可以使用Dictionary<T,bool>
代替HashSet<T>
。无论您添加值为True还是False的项目都是掷硬币,该值都不相关。
它比HashSet<T>
更麻烦,而且重量不是很轻,但肯定比List<T>
更好。
答案 1 :(得分:3)
Code Engineering|Live Code Generation
答案 2 :(得分:0)
如果您可以满足安装.Net 3.5框架的要求,则可以在2.0项目中使用.Net 3.5(System.Core.dll)中的HashSet。
请参阅此问题:Using HashSet in C# 2.0, compatible with 3.5
如果不行,我会改用词典。