问题描述
varm=newMemoryStream(m_temp_bytes,0,length).GetBuffer()
报错:无法访问MemoryStream的内部缓冲区但是换成下面的ToArray就可以varm=newMemoryStream(m_temp_bytes,0,length).ToArray()
为什么呢
解决方案
解决方案二:
GetBuffer是返回MemoryStream内部的buffer,这个的长度也不是stream实际的长度。而ToArray是把内部buffer根据实际长度复制返回的。一般GetBuffer不常用,因为不应该直接操作它的内部数据。MemoryStream只有两个构造方法支持GetBuffer,一个是publicMemoryStream(byte[]buffer,intindex,intcount,boolwritable,boolpubliclyVisible),最后这个参数为true时;另一个是不通过buffer构造,而是使用publicMemoryStream(intcapacity),这种因为不是由外部buffer创建,它可以把内部buffer暴露出来。
解决方案三:
参考msdn:
时间: 2024-11-25 10:05:05