あなたが正しい; 特に類似の。と比較すると、不必要に言葉が多いように見えStreamReader.BaseStream
ます。実際には、StreamReaderとまったく同じように、基になるストリームへの参照を返すだけです。
説明の推定は、基になるストリームへの書き込みには、書き込まれたデータをファイルなどのある種の永続ストアに保存することを伴うということだと思います。もちろん、これは実際にはまったく必要ありません(最悪の場合、それは単に何もしない可能性があります)。
本当に外挿したい場合は、基になるストリームのCanWrite
プロパティがtrue
(少なくともStreamWriterにアタッチされた時点で)あることを意味すると解釈できます。
基になるストリームを実際に返しているだけであると確信するために、Reflectorから逆コンパイルされたコードを次に示します。
public virtual Stream BaseStream
{
[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
get
{
return this.stream;
}
}
ここで、stream
フィールドはInit
メソッドで割り当てられます。
private void Init(Stream stream, Encoding encoding, int bufferSize)
{
this.stream = stream;
...
これはコンストラクターによって呼び出され、引数はアタッチされたストリームです。
[SecuritySafeCritical]
public StreamWriter(Stream stream, Encoding encoding, int bufferSize)
: base(null)
{
...
this.Init(stream, encoding, bufferSize);
}