我今天在阅读有关StreamWriter的内容,并遇到了该属性BaseStream

我在寻找定义,发现了这个


  “获取与后备存储接口的基础流。”


从这里MSDN - StreamWriter.BaseStream

我了解BaseStream对于StreamReader的含义,因为它的定义非常简单:


  返回基础流。


但是StreamWriter.BaseStream的定义是什么意思?更明确地说,定义的这一部分意味着“与后备商店的接口”是什么意思?对我来说这听起来像胡言乱语。

最佳答案

你是对的;它看起来确实不必要,特别是与类似的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);
}

关于c# - .Net StreamWriter.BaseStream,此定义是什么意思? “获取与后备存储接口(interface)的基础流。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4653543/

10-09 01:59