【发布时间】:2014-08-12 22:22:27
【问题描述】:
有时 HashSet 通过属性公开为 IEnumerable。
众所周知,对于enumerable.Count(),代码会检查它是否是一个集合,因此它不会枚举整个列表,而是采用捷径。
对于使用enumerable.Contains(x) 和 HashSets 的 Linq 版本是否有类似的检查?
【问题讨论】:
-
Count()的快捷方式是一个属性。属性如何正确返回动态表达式的布尔值? -
你到底是什么意思?....如果在查询中调用 contains(x) 只会检查列表的一部分?
-
@TravisJ 他的意思是
Enumerable.Count()检查对象是否为ICollection类型,如果是则返回ICollection.Count作为优化。如果不是,则必须枚举可枚举项才能计算项目。 -
@cdhowie - 是的,我理解这方面,但这与
Contains有什么关系?