流和内存流的区别是什么?

25

StreamMemoryStream在C#中的主要区别是什么?

如果我需要创建一个没有文件的Stream,那么应该使用MemoryStream吗?

2个回答

27

MemoryStream 是从普通类 Stream 派生而来。

关于 Stream ,从MSDN中可以得知:

提供字节序列的通用视图。这是一个抽象类。

因此,您不能创建 Stream 的实例。您必须使用其中一个派生类,例如 MemoryStreamFileStream 等。


23

MemoryStreamFileStream是.NET框架中继承自抽象基类Stream的类的示例,如下所示:

  • System.Object
    • System.MarshalByRefObject
      • System.IO.Stream
        • System.IO.FileStream
        • System.IO.MemoryStream
        • ... 其他几个 ...

你可以使用FileStream读/写文件,但可以使用MemoryStream读/写内存中的数据,例如从字符串解码的字节数组。

你不应该单独使用Stream,而应该将其用于多态性,即将其传递给能够接受任何Stream实现作为参数的方法。


MemoryStream使用哪种内存?是栈吗? - Kumar
据我所知,它必须是堆内存。 - steinar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接