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
Обсуждают сегодня