我试过这段代码:
byte[] someData = new byte[] { 1, 2, 3, 4 };
MemoryStream stream = new MemoryStream(someData, 1, someData.Length - 1, true);
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(1);
}
stream.Dispose();
Run Code Online (Sandbox Code Playgroud)
每次运行时,都会抛出NotSupportedException,告诉我无法写入流.为什么会这样?第2行中显示的初始化的最后一个参数显然是正确的,所以我应该能够写入流.如果我没有指定起始索引和计数,它可以工作.
为什么会这样?
小智 10
始终(几乎总是)在构造函数中创建没有参数的内存流:
using (MemoryStream stream = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(1);
}
stream.Flush();
byte[] bytes = stream.GetBuffer();
//use it
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常