gpt4 book ai didi

c# - 在 IList 上使用 Linq 方法 .Any() 和 .All() 时,谓词是否按严格顺序应用于列表?

转载 作者:行者123 更新时间:2023-12-03 23:00:16 25 4
gpt4 key购买 nike

我有课SomeObject其中有一个功能Evaluate()返回一个 bool 值。如果我有一个 IList<SomeObject>像这样:

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

我应用了像 Any 这样的 Linq 表达式或All

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

谓词 p.Evaluate() 的顺序是什么被评估在?难道是

  • objA然后objB然后objC (假设 SomeObject 可排序且 objA < objB < objC )
  • objA然后objC然后objB (它们的顺序是 Add 编辑到 IList<> )

或者评估顺序不可靠?

最佳答案

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

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

关于c# - 在 IList 上使用 Linq 方法 .Any(<predicate>) 和 .All(<predicate>) 时,谓词是否按严格顺序应用于列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com