int Read(Span<byte> buffer)
{
byte[] sharedBuffer = ArrayPool<byte>.Shared.Rent(buffer.Length);
try
{
int numRead = Read(sharedBuffer, 0, buffer.Length);
if ((uint)numRead > (uint)buffer.Length)
{
throw new IOException(SR.IO_StreamTooLong);
}
new Span<byte>(sharedBuffer, 0, numRead).CopyTo(buffer);
return numRead;
}
finally { ArrayPool<byte>.Shared.Return(sharedBuffer); }
}
Такое ощущение, что Stream.Read(span) писал какой-то наркоман.
Мало того, что он читает не весь Span, а только numRead, так ещё и делает это через промежуточный массив. Я для кого Unmanaged-память выделял?.. Тьфу.
(От мысли когда numRead становится больше, чем count to read, мне и вовсе становится не по себе.)
API есть, его надо поддержать. Когда нибудь перепишут... А сейчас как смогли
Так речь же о новом API, а не о чём-то времён .NET 1.1
Обсуждают сегодня