C#中流转换和流复制的区别

问题描述 投票:0回答:1

我有以下代码用于在我的项目中从流创建字节数组

Stream originalStream = something;
using (MemoryStream ms = new MemoryStream())
{
   originalStream.CopyTo(ms);
   var data = ms.ToArray();
} 

我还有

var data = ((MemoryStream)originalStream).ToArray();

这两个代码有什么重大区别吗?我认为第一个代码创建了一个额外的 MemoryStream 并复制了流内容。

但是直接类型转换也一样吗?。第二个代码是否提高了性能?

c# stream
1个回答
0
投票

第二个会扔

InvalidCastException

Stream fileStream = File.OpenRead(@"...");
var stream = (MemoryStream)fileStream; // InvalidCastException

如果流是

MemoryStream
它会更高效,因为您不会执行额外的复制,只需将流对象转换为实际类型。

© www.soinside.com 2019 - 2024. All rights reserved.