繁体   English   中英

使用Linq方法时.Any( <predicate> ) 和所有( <predicate> )在IList上,谓词是否以严格的顺序应用于列表?

[英]When using the Linq methods .Any(<predicate>) and .All(<predicate>) on an IList, are the predicates applied to the list in a strict sequence?

我有一个SomeObject类,它有一个函数Evaluate() ,它返回一个bool。 如果我有一个像这样的IList<SomeObject>

IList<SomeObject> parameters;
parameters.Add( objA );
parameters.Add( objC );
parameters.Add( objB );

我应用了像AnyAll这样的Linq表达式

var res = parameters.Any( p => p.Evaluate() );

谓词p.Evaluate()评估顺序是什么? 可不可能是

  • objA然后objB然后objC (假设SomeObject是可排序的并且objA < objB < objC
  • objA然后objC然后objB (它们被AddIList<>的顺序)

或者评估的顺序不是可以依赖的东西?

LINQ在IEnumerable<T>实例上运行,因此根据定义,应用操作的顺序几乎就是底层枚举器返回它们的顺序。

但是, IList<T>无法保证枚举订单项。 在绝大多数情况下(可能是IList<T>所有框架实现),它将是列表中项目的索引顺序,但接口似乎并不能保证,因此实现可以做任何想做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM