我有以下代码用于在我的项目中从流创建字节数组
Stream originalStream = something;
using (MemoryStream ms = new MemoryStream())
{
originalStream.CopyTo(ms);
var data = ms.ToArray();
}
我还有
var data = ((MemoryStream)originalStream).ToArray();
这两个代码有什么重大区别吗?我认为第一个代码创建了一个额外的 MemoryStream 并复制了流内容。
但是直接类型转换也一样吗?。第二个代码是否提高了性能?
InvalidCastException
:
Stream fileStream = File.OpenRead(@"...");
var stream = (MemoryStream)fileStream; // InvalidCastException
如果流是
MemoryStream
它会更高效,因为您不会执行额外的复制,只需将流对象转换为实际类型。