是否可以覆盖Collections.Seq模块中的值?

时间:2012-09-09 15:15:08

标签: f#

我已经为我构建的集合实现了IEnumerable,并且(尽管我还没有测试过它们),Seq值似乎正常工作。当我的集合值的本机性能优于使用Seq的基于IEnumerable的函数时,是否可以覆盖一些Seq值,例如“last”?我没有找到有关覆盖Seq。

的任何信息

1 个答案:

答案 0 :(得分:2)

否 - 无法覆盖Seq模块中的功能。但是,其中一些确实尝试通过检查输入值(您传递它们的seq<'T>实例)来优化性能,以查看它是IList<'T>还是'T[]的实例;如果是,则函数将采用一些优化的代码路径。例如,如果将数组('T[])传递给Seq.length,则可以使用数组的.Length属性快速确定长度。

如果您坚持使用Seq模块,我能想到的唯一性能优化就是让您的收藏集同时实施ICollection<'T>和/或IList<'T>。这可能会优化某些情况,但不会是所有情况。