c#list方法:ElementAt(索引)vs Find(内容)

时间:2012-05-23 22:36:17

标签: c# linq list

我目前正在构建一个在很大程度上依赖效率的数据结构。

任何人都可以向我提供有关Find(item => item.X = myObject.Property)方法实际工作方式的资源吗? 它是否在所有元素中线性迭代,直到找到元素?

如果我知道myObject的索引并使用ElementAt(索引)怎么办?

这两个中最有效率的是哪一个?

1 个答案:

答案 0 :(得分:6)

来自MSDN documentation on List<T>.Find

  

此方法执行线性搜索;因此,此方法是O(n)操作,其中n是Count。

想象 ElementAt针对IList进行了优化,并将进行直接索引。但是,既然你显然是使用List具体类型的这个对象,为什么不直接做索引呢?像这样:

var result = list[index];

如果您已经知道索引,则没有必要进行搜索。直接去吧。