12

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.

Nuri Tasdemir
  • 9,720
  • 3
  • 42
  • 67

4 Answers4

25

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

Timo Salomäki
  • 7,099
  • 3
  • 25
  • 40
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.

Matthew Watson
  • 104,400
  • 10
  • 158
  • 276
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.

Jeroen Mostert
  • 27,176
  • 2
  • 52
  • 85
0

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.

Rahul
  • 76,197
  • 13
  • 71
  • 125