1
byte [] 배열을 스트림 (예 : 파일 업로드 용)으로 변환 한 다음 내 코드의 다른 부분에서 스트림을 배열 (예 : 파일 다운로드 용)로 다시 변환해야합니다. 바이트 배열의 복사본을 만들지 않고 이러한 작업을 수행 할 수있는 방법이 있습니까?byte []를 Stream으로 변환하고 다시 복사하지 않고 변환하는 방법이 있습니까?
이 코드 비트는 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()뿐입니다. – noctonura