我真的很困惑下面发生了什么。如果我只是尝试返回在using语句中创建的MemoryStream,则它不起作用。但是,如果我调用ToArray并创建另一个流,它的效果很好。我已经尝试从using语句中取出第一个MemoryStream,但结果是一样的。
using (MemoryStream memoryStream = new MemoryStream())
{
using (StreamWriter streamWriter = new StreamWriter(memoryStream))
{
using (JsonWriter jsonWriter = new JsonTextWriter(streamWriter))
{
JsonSerializer jsonSerializer = new JsonSerializer();
jsonSerializer.Converters.Add(new JavaScriptDateTimeConverter());
jsonSerializer.NullValueHandling = NullValueHandling.Ignore;
jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
jsonSerializer.PreserveReferencesHandling = PreserveReferencesHandling.None;
jsonSerializer.Serialize(jsonWriter, account);
streamWriter.Flush();
}
}
// Works
return new MemoryStream(memoryStream.ToArray());
// Doesn't work
return memoryStream;
}
答案 0 :(得分:0)
using
处理流。答案 1 :(得分:0)
“using”在关闭时会执行一个隐式的.Dispose(),所以我希望它不能很好地适应你想要的东西。
我希望不使用“使用”作为memoryStream确实会有用,好奇为什么这对你不起作用。