【发布时间】:2011-05-05 02:36:03
【问题描述】:
使用 System.IO.MemoryStream 类有问题。
创建之后,像这样:
var memory = new MemoryStream();
然后它设置一些字节的长度以写入它。
var length = 181;
memory.SetLength( length);
然后在调试器中,内存显示长度和
位置 BOTH 设置为 181。在单独的简单测试程序中
it 属性在 SetLength() 之后显示 Position 仍为零。
此外,如果我将 Position 属性更改为 0 使用
调试器或通过添加一行代码,它会忽略
并且仍然显示 181 作为位置属性。因此它
表现得好像不可变。
但是,再次在一个简单的单元测试中,这可以按预期工作。
起初,这似乎是一个线程问题,因为 如果 MemoryStream 不是线程安全的。但在调试器中, 在调用任何此代码之前,我冻结了所有其他线程。 它仍然像上面一样失败。
嗯,这是最奇怪的。有什么想法可以尝试吗?
【问题讨论】:
标签: c# immutability memorystream