【问题标题】:Queue<byte> vs. StreamQueue<byte> 与 Stream
【发布时间】:2011-07-21 18:59:53
【问题描述】:

C#中的队列和流有区别吗?

【问题讨论】:

    标签: c# generics stream queue byte


    【解决方案1】:

    问题应该是:除了都提供某种接口来从中检索字节之外,它们还有什么共同点吗?

    队列Queue&lt;byte&gt; 就是这样,一个 FIFO 字节队列,主要功能是一次将单个字节值入队或出队 - 没有随机访问。您通常将队列用作 数据结构 或算法的一部分(即想到树中的广度优先搜索)。队列中的所有数据都存储在内存中。

    另一方面,流是字节流的抽象表示,通常从文件、内存、网络或其他源获得 - 总是有一个底层源或目标。这个源不必在内存中,即网络或文件流将允许您读取或写入文件或网络 - 因此流是从 A 到 B 获取字节的主要方式。

    【讨论】:

      【解决方案2】:

      队列必须存储字节,流不需要。大不同。

      【讨论】:

      • Hans,在 .NET 中,裸流仅处理 byte[]。你需要一个 Formatter/Writer 来存储其他东西。
      • 是的,队列必须存储东西的副作用。我只是想强调最大的区别,太多了。顺便说一句:Stream&lt;T&gt; 不是很好吗?
      【解决方案3】:

      我根本不是 C#(甚至 .NET)人,希望有人能提供更详细的答案,但是..

      我认为很明显QueueStream 是完全不同的。我理解你为什么要问,但即使是快速浏览一下 API 也会发现很多差异。

      http://msdn.microsoft.com/en-us/library/system.io.stream.aspx
      http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx

      这些差异中最重要的是队列是 Collections 包的一部分,StreamIO 的一部分

      EDIT - typed Queue 可能更适用,如其他海报所示
      http://msdn.microsoft.com/en-us/library/7977ey2c.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-15
        • 2019-05-24
        • 2011-09-19
        • 2021-12-05
        • 1970-01-01
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        相关资源
        最近更新 更多