查看一些代码System.Linq
我遇到过一些 Buffer<TSource>
的例子正在使用中。
以 Enumemerable.ReverseIterator
为例使用Buffer有什么好处?
private static IEnumerable<TSource> ReverseIterator<TSource>(
IEnumerable<TSource> source)
{
Buffer<TSource> buffer = new Buffer<TSource>(source);
for (int i = buffer.count - 1; i >= 0; --i)
yield return buffer.items[i];
}
最佳答案
嗯,某物需要读取整个序列,以便它可以按相反的顺序返回它们。 Buffer<TSource>
是这里的一种选择,而且是一种有效的选择 - 但它可以通过 ToArray()
来实现或ToList()
。缓冲区允许创建“超大”数组(与列表相同的方式,但版本控制较少等),而无需最后的“修剪”步骤,这将出现在 ToArray
中。 .
您可能会找到我的一些 Edulinq (我为了乐趣和教育而重新实现 LINQ to Objects)有趣的文章,包括:
(故意按照这个顺序,因为它们显示了导致类似“缓冲”想法的演变。)
关于c# - 在 Reverse 方法中使用 Buffer<TSource> 有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172564/