你是对的; 它确实显得不必要地冗长,尤其是与类似的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);
}