【发布时间】:2011-07-21 18:59:53
【问题描述】:
C#中的队列和流有区别吗?
【问题讨论】:
标签: c# generics stream queue byte
C#中的队列和流有区别吗?
【问题讨论】:
标签: c# generics stream queue byte
问题应该是:除了都提供某种接口来从中检索字节之外,它们还有什么共同点吗?
队列Queue<byte> 就是这样,一个 FIFO 字节队列,主要功能是一次将单个字节值入队或出队 - 没有随机访问。您通常将队列用作 数据结构 或算法的一部分(即想到树中的广度优先搜索)。队列中的所有数据都存储在内存中。
另一方面,流是字节流的抽象表示,通常从文件、内存、网络或其他源获得 - 总是有一个底层源或目标。这个源不必在内存中,即网络或文件流将允许您读取或写入文件或网络 - 因此流是从 A 到 B 获取字节的主要方式。
【讨论】:
队列必须存储字节,流不需要。大不同。
【讨论】:
byte[]。你需要一个 Formatter/Writer 来存储其他东西。
Stream<T> 不是很好吗?
我根本不是 C#(甚至 .NET)人,希望有人能提供更详细的答案,但是..
我认为很明显Queue 和Stream 是完全不同的。我理解你为什么要问,但即使是快速浏览一下 API 也会发现很多差异。
http://msdn.microsoft.com/en-us/library/system.io.stream.aspx
http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx
这些差异中最重要的是队列是 Collections 包的一部分,Stream 是 IO 的一部分
EDIT - typed Queue 可能更适用,如其他海报所示
http://msdn.microsoft.com/en-us/library/7977ey2c.aspx
【讨论】: