Use the CanRead property to determine whether the current instance supports reading. For additional information, see CanRead.
Notes to Implementers
The default implementation on Stream creates a new single-byte array and then calls Read. While this is formally correct, it is inefficient. Any stream with an internal buffer should override this method and provide a much more efficient version that reads the buffer directly, avoiding the extra array allocation on every call.