无法使用BinaryWriter写入MemoryStream

hai*_*yyu 3 c# stream

我试过这段代码:

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)

这段代码工作正常