在C#中构建唯一对象列表的最佳方法

Fio*_*ite 4 c# performance generic-list

我想知道在C#中构建一个唯一的对象列表是否会更快地遵循一种或另一种模式:

选项1

  • 将所有项添加到通用列表中
  • 调用list.Distinct函数就可以了

选项2

  • 迭代每个项目
  • 检查项目是否已存在于列表中,如果不存在则添加

Zbi*_*iew 17

你可以使用HashSet<T>:

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

您可以IEqualityComparer<T>通过构造函数提供自定义.

  • `HashSet <T>`实际上不是一个列表 - 它不保留顺序,也不提供索引访问.(并不是OP似乎也意识到这种区别.) (2认同)