List .IndexOf()与List .FindIndex()的效率

其中一种方法

  • List.IndexOf()
  • List.FindIndex()

在处理时间方面更有效?

此实例中的T类型为String

IndexOf执行for循环,使用正在搜索的对象的Equals实现来查找匹配项。 FindIndex还会执行for循环,但会评估Predicate以检查匹配。

他们每个都归结为一个for循环。 性能差异(如果有的话)可以忽略不计。 以下是一些MSDN摘录:

List.IndexOf Method (T)

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

List.FindIndex Method (Predicate)

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

也就是说,两种function的使用方式完全不同。 前者假设您有一个列表中的对象,您只需要知道列表中存在的索引(如果有)。

后者假设您了解某个对象的某些条件,并且您希望找到列表中的对象与该条件匹配的第一个索引。 可能有多个匹配项,但该方法返回第一个匹配项。