c# - 在 Reverse 方法中使用 Buffer<TSource> 有什么好处

标签 c# buffer

查看一些代码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/

相关文章:

c# - 不通过单击设置按钮来更新 datagridview 中的所有多个选定单元格值

c# - 如何为 Portable HttpClient 实现进度报告

c# - Monitor.Wait 是否确保重新读取字段?

c - 在 Linux 上用 C 打开文件时出现问题

node.js - 如何将图像写入具有缓冲区的服务器?

c# - Mailkit 对 Imap 的身份验证失败

c# - 如何从 ChangeTracker 获取原始实体

python - 避免缓冲读取 "for line in ..."

c - 在 C 中从 Stdin 读取两次

node.js - 流利的 ffmpeg 模块 : "end" event does not fire