【发布时间】:2013-06-20 17:43:52
【问题描述】:
我需要将 byte[] 数组转换为流(例如,用于上传文件),然后在我的代码的另一部分中,将流转换回数组(例如,用于下载文件)。有没有办法在不复制字节数组的情况下进行这些操作?
这段代码显示 MemoryStream 创建副本。我想用安全性换取更好的内存性能。
static void Main(string[] args)
{
byte[] array1 = new byte[1024];
using (MemoryStream s = new MemoryStream(array1))
{
byte[] array2 = s.ToArray();
Console.WriteLine(Object.ReferenceEquals(array1, array2)); // "false"
}
}
【问题讨论】:
-
您没有显示
MemoryStream创建副本,您显示了ToArray()制作副本。尝试byte[] array1 = new byte[1]; Console.WriteLine(array1[0]); using (MemoryStream s = new MemoryStream(array1)) {s.WriteByte(1);} Console.WriteLine(array1[0]);它将输出0然后1。 -
好点 - 它只是 ToArray() 制作副本。
标签: .net memorystream