What are the default values for StreamReader?

2019-06-17 10:46发布

问题:

I need to use this constructor public StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen) in order to set leaveOpen to true. And in order to do that I need to set the other parameters as well (Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize). I want to use StreamReader as it is so I do not want to give some random values. What are the default values for these parameters?

By the way, I know that I can use StreamReader without using. And GC will get rid of it without touching the stream.

回答1:

The default values are the following:

  • Encoding: Encoding.UTF8
  • detectEncodingFromByteOrderMarks: true
  • DefaultBufferSize: 1024

You can see the constructors and the values yourself by visiting Reference Source



回答2:

Encoding.UTF8, true, and 1024, respectively.

Source: the source.

That the default for Encoding is Encoding.UTF8 and the default for bufferSize is 1024 is also documented in the MSDN, but the default for detectEncodingFromByteOrderMarks doesn't appear to be.



回答3:

You can inspect the reference source to determine this.

It reveals that:

  • detectEncodingFromByteOrderMarks is true
  • DefaultBufferSize is 1024 or 4096
  • encoding is Encoding.UTF8
  • leaveOpen is false

Personally, I'd make the DefaultBufferSize 4096 for a desktop app.



回答4:

Stream stream you need to pass to read from. Encoding encoding default AFAIK is UTF-8. int bufferSize is minimum 128 characters. bool leaveOpen is false by default and so it will call Dispose() after reading the stream

Documentation said it clearly.