C# 列表方法:ElementAt(索引)与Find(内容)
我目前正在构建一个非常依赖效率的数据结构 有人能为我提供有关Find(item=>item.X=myObject.Property)方法实际工作原理的资源吗? 它会在所有元素中线性迭代直到找到元素吗 如果我知道myObject的索引,并且使用ElementAt(索引),会怎么样 请问这两种方法中哪一种效率最高?来自 该方法执行线性搜索;因此,该方法是一个O(n)操作,其中n是Count 我认为C# 列表方法:ElementAt(索引)与Find(内容),c#,linq,list,C#,Linq,List,我目前正在构建一个非常依赖效率的数据结构 有人能为我提供有关Find(item=>item.X=myObject.Property)方法实际工作原理的资源吗? 它会在所有元素中线性迭代直到找到元素吗 如果我知道myObject的索引,并且使用ElementAt(索引),会怎么样 请问这两种方法中哪一种效率最高?来自 该方法执行线性搜索;因此,该方法是一个O(n)操作,其中n是Count 我认为ElementAt针对IList进行了优化,并将执行直接索引。但是,既然您显然是在使用列表中的这个对象,
ElementAt
针对IList
进行了优化,并将执行直接索引。但是,既然您显然是在使用列表中的这个对象,那么为什么不直接进行索引呢?像这样:
var result = list[index];
如果您已经知道索引,那么搜索就没有意义了。直接去吧。从
该方法执行线性搜索;因此,该方法是一个O(n)操作,其中n是Count
我认为ElementAt
针对IList
进行了优化,并将执行直接索引。但是,既然您显然是在使用列表中的这个对象,那么为什么不直接进行索引呢?像这样:
var result = list[index];
如果您已经知道索引,那么搜索就没有意义了。直接执行即可。ElementAt尝试将集合强制转换为IList,如果成功,它将返回请求索引处的元素。如果没有,它将使用enumeratorElementAt尝试将集合强制转换为IList,如果成功,它将返回请求索引处的元素。如果不是,它将使用枚举器