IEnumerable 可能的多重枚举吗? [复制]

2024-02-27

这是为什么 ?我该如何解决它?


这里没有什么需要修复的。Any()将迭代枚举,但在第一个元素之后停止(之后返回 true)。

多重枚举主要在两种情况下出现问题:

  • 性能:通常,如果您希望避免多次迭代, 可以,因为速度较慢。这不适用于此处,因为Any()将要 只需确认至少有一个元素并且是您必需的检查即可。此外,您没有访问任何远程/外部资源,只是访问内存中的序列。

  • 不能迭代多次的枚举:例如 从网络等接收物品 - 也不适用于此处。

作为非 Linq 版本,只需迭代一次could请执行下列操作:

bool foundAny= false;
bool isEqual = true;

if(f == null)
  throw new ArgumentException();

foreach(var check in f)
{
   foundAny = true;
   isEqual = isEqual && check(p,p2);
}

if(!foundAny)
  throw new ArgumentException();

return isEqual;

但是,如前所述,在您的情况下,这没有什么区别,我会选择对您来说更易读的版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IEnumerable 可能的多重枚举吗? [复制] 的相关文章

随机推荐