这两者之间的基本区别是什么:
var buffer = new byte[8192];
var bytesRead = Stream.Read(buffer, 0, buffer.Length);
var buffer = new byte[8192];
var span = new Span<byte>(buffer);
var bytesRead = Stream.Read(span);
var buffer = new byte[8192];
var memory = new Memory<byte>(buffer);
var bytesRead = Stream.ReadAsync(memory).Result;
除了它们都是不同的对象类型,以及唯一一个接受Memory<Byte>
的Stream.Read()
方法当然是ReadAsync()
,这是显而易见的事实。
为什么我会选择byte[]
、Span<byte>
或Memory<byte>
中的任何一种?我如何决定哪种最适合我的情况?
Span<T>
和Memory<T>
),没有真实的用例或在此情况下与byte[]
的比较。 - cogumel0IntPtr
、byte*
、Memory<Byte>
、Span<Byte>
、Byte[]
以及之间的所有其他类型(如ArraySegment<Byte>
、IList<Byte>
、IReadOnlyList<Byte>
等)等等... 叹气 - Dai