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

tes*_*est 1 c# linq list

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

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

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

请问这两个中哪个效率最高?

Pau*_*ips 6

来自 MSDN documentation on List<T>.Find

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

ElementAt是优化的IList,并将做一个直接索引.但是既然你显然是从List混凝土类型中使用这个对象,为什么不直接做索引呢?像这样:

var result = list[index];
Run Code Online (Sandbox Code Playgroud)

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

  • ElementAt尝试将集合强制转换为IList,如果成功则返回请求索引处的元素.如果没有,它将使用枚举器 (3认同)