That’s the api provided, and part of the point. The other option is to read the buffer directly, but it isn’t exposed to the programmer.
int StreamReader.Read()
int StreamReader.Read(char[] buffer, int index, int count)
https://github.com/dotnet/runtime/blob/1ba0394d71a4ea6bee7f6...