【C#/笔记】关于Stream与byte[]

Stream

  • 定义
    广义来讲,流应该是一种物质的连续动态的形式,例如水流,车流等。
    那么在C#中流应该既是连续数据的载体,而且是二进制形态的数据。

  • Stream
    C#中的Stream是个抽象类,属性包含了可读可写可查找及延时等特性还有有一个长度Length和Position
    这个Position属性很重要,相当于”游标”的作用,用来获取或设置当前流中的(游标)位置.

    Stream有几个派生类,主要是这几个命名空间的:Data(数据库)、IO(计算机IO操作)、Net(网络通信)。
    这里选取IO下的MemoryStream为例。
    在源码的注释中有这么句话:This stream may reduce the need for temporary buffers and files in an application. (流或许可以减少我们在应用程序中对临时缓存和文件的依赖)
    换句话说MemoryStream能在开发过程中为我们提供更简便的缓存服务。

  • MemoryStream与Byte[]
    由此不禁想到,MemoryStream一定与byte[]有一定的关系。同样满足容纳多个字节数据,但byte[]的抽象程度显然更高,不具备在应用中对流式数据多方面的控制和扩展能力。

    查看源码,我们可以看到这行代码
    private byte[] _buffer; // Either allocated internally or externally.
    作为私有成员变量,可以从内部申请或从外部传入来得到一个byte[]作为缓存区。

    自然也提供了两者相互转化的方法供我们调用,而且很简洁。
    MemoryStream转为byte[]: public virtual byte[] ToArray()
    byte[]转为MemoryStream:public

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值